Небольшой пример скрипа на тему как сделать бесконечную дорогу. Как правило, реализовывают в раннерах. Из-за ограничений предоставляемых бесконечностью :) герой остается на месте а окружение движется ему на встречу. Необходимо точно позиционировать тайлы с последующим их замещением на расположенные вне экрана (эдакий пулл).
using UnityEngine; public class RepeatMover : MonoBehaviour { public Transform[] blocks; public Vector3 axis; public float tileSize; public float speed; private Vector3 _start; private int[] _cid; private float _pre = 0f; void Awake() { _start = blocks[0].position; _cid = new int[blocks.Length]; for (int i = 0; i < blocks.Length; ++i) _cid[i] = i; } void Update() { float re = Mathf.Repeat(Time.time * speed, tileSize); bool over = (re < _pre); _pre = re; for (int i = 0; i < blocks.Length; ++i) { if (over) { _cid[i] = (_cid[i] + 1) % _cid.Length; } blocks[i].position = _start + (axis * _cid[i] * tileSize) + (axis * re); } } }
Комментарии
Отправить комментарий