public class ColorChangeEffect : MonoBehaviour
{
private Renderer objRenderer;
private Color originalColor;
public Color targetColor = Color.red;
public float duration = 1f; // 변화 시간
private void Start()
{
objRenderer = GetComponent<Renderer>();
originalColor = objRenderer.material.color;
StartCoroutine(BlinkEffect());
}
IEnumerator BlinkEffect()
{
while (true)
{
objRenderer.material.color = targetColor;
yield return new WaitForSeconds(0.5f);
objRenderer.material.color = originalColor;
yield return new WaitForSeconds(0.5f);
}
}
}
- 오브젝트가 빨간색 → 원래 색상으로 깜빡이는 효과
- WaitForSeconds(0.5f)를 사용하여 0.5초마다 변경
public class BuffEffect : MonoBehaviour
{
public float buffDuration = 5f; // 버프 지속 시간
public float speedBoost = 2f; // 이동 속도 증가량
private PlayerController playerController;
private void Start()
{
playerController = GetComponent<PlayerController>();
}
public void ActivateBuff()
{
StartCoroutine(BuffCoroutine());
}
IEnumerator BuffCoroutine()
{
Debug.Log("버프 시작! 속도 증가");
playerController.moveSpeed *= speedBoost; // 속도 증가
yield return new WaitForSeconds(buffDuration); // 버프 지속 시간
Debug.Log("버프 종료! 속도 원래대로");
playerController.moveSpeed /= speedBoost; // 원래 속도로 복구
}
}
- ActivateBuff()를 호출하면 버프가 시작됨
- 5초 동안 이동 속도가 증가한 후 다시 원래 값으로 돌아감
public class SmoothColorChange : MonoBehaviour
{
private Renderer objRenderer;
public Color startColor = Color.white;
public Color endColor = Color.blue;
public float transitionTime = 2f;
private void Start()
{
objRenderer = GetComponent<Renderer>();
StartCoroutine(ColorLerpEffect());
}
IEnumerator ColorLerpEffect()
{
float elapsedTime = 0f;
while (elapsedTime < transitionTime)
{
objRenderer.material.color = Color.Lerp(startColor, endColor, elapsedTime / transitionTime);
elapsedTime += Time.deltaTime;
yield return null;
}
objRenderer.material.color = endColor;
}
}
- Color.Lerp()를 사용하여 부드럽게 색이 변하도록 설정
- 2초 동안 천천히 색이 White → Blue로 변화
특강에서 코루틴 설명후 자료 참고