Создание простой бесконечной движущейся платформы с кубиками - PullRequest
0 голосов
/ 18 марта 2019

Попытка создать simple endless moving platform с 3 кубами масштаба 70 по z (игрок не будет двигаться вперед, просто будет двигаться влево / вправо). Сценарий RepositionPlatform прикреплен к каждой платформе / кубу, который отвечает за перемещение и проверяет z position каждой платформы, и если он равен <= -100.0f, then position is changed to (0,0,200.0f).

Проблема в том, что иногда между платформами (кубами) есть небольшой зазор или есть небольшое перекрытие, которое мне не нужно.

Платформы должны быть расположены одна за другой без зазоров или перекрытий !!!

Может кто-нибудь помочь найти проблему, глядя на сценарий, или предложить какой-нибудь другой лучший способ?

Сценарий ниже прикреплен к 3 игровым объектам платформы !!!

public class RepositionPlatform : MonoBehaviour
{
    private GameObject platformGO;

    [SerializeField]
    private float speed;

    // Start is called before the first frame update
    void Start()
    {
        platformGO = this.gameObject;
        Debug.Log("In RepositionPlatform Start method - "+ platformGO.name);
    }

    // Update is called once per frame
    void Update()
    {

        Debug.Log("In RepositionPlatform Update Method- " + platformGO.name);

        platformGO.transform.Translate(Vector3.back * Time.deltaTime * speed);

        Transform platformTransform = platformGO.transform;
        if(platformTransform.position.z <= -100.0f)
        {
            platformTransform.position = new Vector3(0,0,200.0f);
        }
    }
}

1 Ответ

1 голос
/ 18 марта 2019

Возможно, потому что скорость - это значение с плавающей запятой.Вы должны прочитать их, если вы этого еще не сделали.

Короче говоря, вы не учитываете, насколько далеко может быть ниже -100 значение, вы просто его сбрасываете.

Если вы переведете его вместо этого, вы сохраните любое дополнительное расстояние за пределами -100, которое могло бы пройти преобразование.

Попробуйте вместо этого:

If (transform.position.z < -100){

  transform.Translate(new Vector3(0,0,200));

}

Редактировать Должно быть значение Z, а не X

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...