我将瓷砖实例化为一条路径,每四个实例化的瓷砖,它们应该开始向右实例化,四个实例化后,它们又直行。
为了检查这个逻辑,我做了一个变量 spawnOffset 并每帧递增+1。
如果 spawnOffset % 4 == 0 转向
但是,我没有得到一个改变的方向在定期的时间间隔,当我调试,帧跳过,所以是的逻辑。
public GameObject go;
public Transform Playertransform;
public Vector3 tileSpawnOffset = Vector3.zero;
private Vector3 direction = Vector3.forward;
public int SpawnOffset = -3;
private bool turnRight = false;
void Update()
{
SpawnPath();
ChangeDirection();
}
void SpawnPath()
{
if (Playertransform.position.z > SpawnOffset)
{
tileSpawnOffset += direction;
Instantiate(go, this.transform.position + tileSpawnOffset, this.transform.rotation, this.transform);
SpawnOffset++;
}
}
void ChangeDirection()
{
if (SpawnOffset % 4 == 0)
{
turnRight = !turnRight;
}
direction = turnRight == true ? Vector3.right : Vector3.forward;
}
float time = 0f;
void ChangeDirection()
{
time += Time.deltaTime;
if (time > 1)
{
turnRight = !turnRight;
time = 0;
}
direction = turnRight == true ? Vector3.right : Vector3.forward;
}
由于你总是调用SpawnPath(); ChangeDirection(); 每帧如果(Playertransform.position.z > SpawnOffset)连续两次为false,你的turnright bool就会被翻转,不管每帧你的4的倍数。 如果你没有产生一个新的瓷砖,你不需要调用ChangeDirection。