Hello, i’m making a classic game(looks like pong) and i’m trying to make some objects move from time to time, and some power ups falling, i first used to check if a score number is achieved, let a powerup go, but i can’t do this forever,
So what do you suggest to make such things happen from time to time, but in an infinite loop?!
Thank you for checking my question, i’m looking forward for your answers!
You could use InvokeRepeating if you want the length of time between each powerup drop to be the same.
void Start()
{
InvokeRepeating("SpawnPowerup()", 10, 10);
}
If you want the time between them to be random then you could use a timer like this:
using UnityEngine;
public class RandomTimer : MonoBehaviour
{
private float timer;
void Start()
{
timer = Random.Range(5,10);
}
void Update()
{
if(timer > 0) timer -= Time.deltaTime;
else
{
// spawn your powerup here
Debug.Log ("Spawned powerup!");
// Set the timer to a new random length
timer = Random.Range(5,10);
}
}
}
Or you could use a coroutine:
using UnityEngine;
using System.Collections;
public class RandomTimer : MonoBehaviour
{
void Start()
{
StartCoroutine(SpawnPowerup());
}
IEnumerator SpawnPowerup()
{
while (true)
{
yield return new WaitForSeconds(Random.Range(5, 10));
// Spawn your powerup here
Debug.Log ("Spawned powerup!");
}
}
}
The Invoke was enough for the powerUps, but what should i do for a period loop?
I mean i have some objects that o want them to move every amount of time but for like 5 or 6 seconds.
in C# i had this idea
if (DateTime.Now.Seconds > 5 && DateTime.Now.Seconds < 10)
{
MoveObjects();
}
How can this be done in Javascript? is it a good code that i depend on?