Перемещение игрового объекта x раз каждые x раз

#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 если ответ решил вашу проблему, примите ответ, иначе этот вопрос останется без ответа.