Обновление пропуска единства обновления в кадре - PullRequest
0 голосов
/ 23 апреля 2020

Я создаю плитки как путь, на каждых четырех экземплярах плитки они должны начинать создавать экземпляры вправо, после четырех экземпляров они go снова прямые.

, чтобы проверить эту логику c I , сделал переменную spawnOffset и увеличил +1 на каждый кадр.

если spawnOffset% 4 == 0 изменить направление

но я не получая смены направления через равные промежутки времени, когда я отлаживаю, кадр пропускает и логика c

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

1 Ответ

1 голос
/ 23 апреля 2020

Так как вы всегда вызываете оба SpawnPath (); Изменить направление(); каждый фрейм if (Playertransform.position.z> SpawnOffset) когда-либо ложь дважды подряд, ваш бул правого ордера переворачивается независимо от каждого фрейма, кратного 4. Вам не нужно вызывать ChangeDirection, если вы не породили новую плитку , если вы просто удалите этот вызов из обновления и добавите его сразу после вашего приращения, SpawnOffset, вероятно, исправит это.

...