Forum
2019.03.25
" 마우스 클릭시 마다 RGB값 변경하는 법 ㅠㅠ
-
public class ChangeColor : MonoBehaviour {
void Start() {
//노란색
GetComponent<Renderer>().material.color = new Color(255/255f, 255/255f, 0/255f);
}
void Update () {
for(int i=0; i < 15; i++){
if (Input.GetMouseButton(0)) {
GetComponent<Renderer>().material.color = new Color(255/255f, (255-17*i)/255f, (0+17*i)/255f);
}
//bool Input.GetKeyDown(KeyCode.N) = false;
}
}
}
마우스로 클릭할때마다, 노란색의 RGB에서 서서히 값을 줄여가고 싶은데, 한번 클릭하면 255,0,255로 확 바뀌어 버리네요
어떻게 해야할까요?
- Replies
-
코드는 잘 모르겠어서 인스펙터로 해보긴 했습니다...
마우스 클릭하면 인보크 리핏으로 반복 시켰어요
업데이트에서 for문은 매우 빠르게 동작되서 순식간에 바뀌는것 처럼 보일거에요
public class ChangeColor : MonoBehaviour{
public Renderer thisRenderer;
public Color startColor;
public Color changeColor;
public Color progressColor;
public float adjustValue = 2.5f;
public int repeatCount = 15;
public int count;
public bool isRepeating;
void Start(){
thisRenderer = GetComponent();
thisRenderer.material.color = startColor;
progressColor = startColor;
}
void Update(){
if(Input.GetMouseButtonDown(0) && isRepeating == false){
isRepeating = true;
InvokeRepeating("SetColor", 0f, Time.deltaTime);
}
}
void SetColor(){
count++;
if(count == repeatCount){
isRepeating = false;
count = 0;
CancelInvoke("SetColor");
}
progressColor = Color.Lerp(progressColor, changeColor, adjustValue * Time.deltaTime);
thisRenderer.material.color = progressColor;
}
}kmin729 2019.03.25 -
coroutine을 사용해서 해결하시면 될 것 같습니다. 다음 링크를 한 번 참고해 보세요
https://kwangyulseo.com/2015/05/15/%EC%BD%94%EB%A3%A8%ED%8B%B4coroutine-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/atshin 2019.03.25
