统一更新跳帧计算

问题描述 投票:0回答:1

我将瓷砖实例化为一条路径,每四个实例化的瓷砖,它们应该开始向右实例化,四个实例化后,它们又直行。

为了检查这个逻辑,我做了一个变量 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;



    }

spawnOffset % 4 == 0但当我尝试用时间代替

float time = 0f;
 void ChangeDirection()
    {
        time += Time.deltaTime;
        if (time > 1)
        {
            turnRight = !turnRight;
            time = 0;
        }

        direction = turnRight == true ? Vector3.right : Vector3.forward;

    }

它工作得非常好。所以,我怎么能修复它。我,不想使用时间,我想改变方向正好在4个瓷砖产卵后。according to time

unity3d c#-4.0
1个回答
1
投票

由于你总是调用SpawnPath(); ChangeDirection(); 每帧如果(Playertransform.position.z > SpawnOffset)连续两次为false,你的turnright bool就会被翻转,不管每帧你的4的倍数。 如果你没有产生一个新的瓷砖,你不需要调用ChangeDirection。

© www.soinside.com 2019 - 2024. All rights reserved.