[英]How do I set up a time loop in Unity
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spawner : MonoBehaviour
{
public GameObject enemy;
float defaultSpawnTime = 1f;
float spawnTime = 1f;
float realTime = 4f;
void Start()
{
}
void Update()
{
spawnTime-= Time.deltaTime;
realTime += Time.deltaTime;
if (spawnTime < 0 && realTime<30f && realTime>5f)
{
GameObject go = Instantiate(enemy, new Vector3(Random.Range(-2.3f, 2.3f), 8f, 0), Quaternion.Euler(0, 0, 0)) as GameObject;
GameObject go1 = Instantiate(enemy, new Vector3(Random.Range(-2.3f, 2.3f), 8f, 0), Quaternion.Euler(0, 0, 0)) as GameObject;
spawnTime = defaultSpawnTime;
if (realTime > 30f)
{
realTime = 0f;
}
}
}
}
我的游戏是二维的。 在游戏中,每 2 秒就会有一颗陨石从上方落下。 玩家在这些方面挣扎。
但由于游戏很累,我不希望陨石每30秒下5秒,所以玩家才有机会休息。
我还想创建一个时间变量并实时增加它。 我试着让流星雨发生,前提是时间在 5 到 30 之间。
如果时间大于 30,我想将它返回到 0 并循环它,但是 30 之后它继续进行。 我不知道我哪里出错了,你能帮帮我吗?
添加几个计时器后,很难像这样管理时间。 尝试使用协程,例如:
void Start(){
StartMeteorShower(5f);
}
void StartMeteorShower(float time){
StartCoroutine(StartMeteorShowerDelayed(time);
}
IEnumerator StartMeteorShowerDelayed(float delay){
yield return new WaitForSeconds(delay);
StartCoroutine(MeteorShowerCoroutine());
}
IEnumerator MeteorShowerCoroutine(){
var startTime = Time.time;
var delay = new WaitForSeconds(1f);
do
{
SpawnMeteor();
yield return delay;
}
while(Time.time - startTime < _meteorShowerDuration);
//here you can queue next meteor shower
StartMeteorShower(30f);
}
只需将 if 语句移到第一个 if 之外。 因为在 realtime > 30 之后,您的条件“ && realTime<30f && ”不满足
void Update()
{
spawnTime-= Time.deltaTime;
realTime += Time.deltaTime;
if (spawnTime < 0 && realTime<30f && realTime>5f)
{
GameObject go = Instantiate(enemy, new Vector3(Random.Range(-2.3f, 2.3f), 8f, 0), Quaternion.Euler(0, 0, 0)) as GameObject;
GameObject go1 = Instantiate(enemy, new Vector3(Random.Range(-2.3f, 2.3f), 8f, 0), Quaternion.Euler(0, 0, 0)) as GameObject;
spawnTime = defaultSpawnTime;
}
if (realTime > 30f)
{
realTime = 0f;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.