MrSausage
MrSausage

Reputation: 3

Moving a gameobject x time every x time

I have a gameobject and I want it to move down for 0.5 seconds every 1.5 seconds (something like a "movement cooldown"). (As extra info the game is 2d) Hope I can get an answer :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;

}

Upvotes: 0

Views: 46

Answers (1)

Aethers haven
Aethers haven

Reputation: 86

While I'm not that familiar with Unity, something like this might work:

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;
    }
}

Upvotes: 2

Related Questions