#c# #unity3d #coroutine
#c# #unity3d #сопрограмма
Вопрос:
У меня есть игровой объект, и я хочу, чтобы он перемещался вниз на 0,5 секунды каждые 1,5 секунды (что-то вроде «перезарядки движения»). (В качестве дополнительной информации игра 2d) Надеюсь, я смогу получить ответ: D
private float _speed=2.0f;
void Update()
{
StartCoroutine(Move());
}
IEnumerator Move()
{
float timeElapsed = 0.0f;
while(timeElapsed<=0.5f)
{
transform.Translate(Vector3.down * _speed * Time.deltaTime);
yield return null;
}
yield return new WaitForSeconds(1.5f);
_speed = 0.0f;
}
Ответ №1:
Хотя я не очень хорошо знаком с Unity, что-то вроде этого может сработать:
private float _speed=2.0f;
private float timeSinceLastMovement = 0f;
void Update()
{
timeSinceLastMovement = Time.deltaTime;
if (timeSinceLastMovement >= 1.5)
{
StartCoroutine(Move());
timeSinceLastMovement = 0;
}
}
IEnumerator Move()
{
float timeElapsed = 0.0f;
while(timeElapsed<=0.5f)
{
transform.Translate(Vector3.down * _speed * Time.deltaTime);
timeElapsed = Time.deltaTime;
yield return null;
}
}
Комментарии:
1. @MrSausage если ответ решил вашу проблему, примите ответ, иначе этот вопрос останется без ответа.