Reputation: 3
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
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