Здравствуйте! Пытаюсь самостоятельно реализовать прототип игровой механики. В программировании не девственно-наивен, но в Unity 3D практически нулевой (изучаю АPI и туторы). Потому и вопрошаю: Скажите, люди добрые, куда копать, если я хочу отслеживать расстояние, пройденное объектом (игроком). То есть, моя задача, остановить игрока (или вызвать событие), после того, как он прошёл определённое расстояние. При этом, по мере непрерывного передвижения игрока, показывать его текущее пройденное расстояние в целых метрах. Заранее благодарен.
Спасибо! Кратко и ёмко. Можно я разверну вопрос в эту сторону? Аругментами в Vector3.Distance() являются 2 переменных типа vector3 (от и до которых меряеется расстояние). Чисто алгоритмически не могу сообразить как решить. В функции Update (), я использую Vector3.Distance(), при этом одна переменная - это объект игрока, который может двигаться во всех направлениях. Что будет второй переменной? Мой ход мысли таков - каждый кадр я должен ставить на текущее место игрока объект-пустышку, затем перемещать игрока, затем считать Vector3.Distance() и плюсовать это к float global sum_distance - переменной, хранящей общий пройденный путь в метрах. Так?
Нет, лучше for с бесконечным аргументом в update поставить - так вернее комп загнётся. Запоминаете стартовую (изначальную) позицию объекта и сравниваете её с настоящей (с той, которая сейчас). Правила форума · участникGCC
Запоминаете стартовую (изначальную) позицию объекта и сравниваете её с настоящей (с той, которая сейчас)
Не факт... это бы сработало только при прямолинейном движении. Тут даже массива не надо, через определенные промежутки времени фиксируем текущую точку, меряем расстояние до предыдущей, затем удаляем предыдущую и делаем предыдущей текущую и т.д.. Пройденные расстояния за промежутки времени суммируем в отдельной переменной - все просто. X.cor.R (Prologue)
Пройденные расстояния за промежутки времени суммируем в отдельной переменной - все просто.
Очень дельный совет. Каждый кадр через "Vector3.Distance() " определяй расстояние между предыдущей и настоящей позицией игрока и полученное значение прибавляй к какой-либо переменной типа float.
transform.position - это Vector3. Вот первая связь transform - компонент любого GameObject. Вот вторая связь В Start запоминаешь начальную позицию объекта в некоей переменной В Update 1. находишь расстояние между текущей позицией и запомненной переменной 2. прибавляешь это расстояние к пройденной дистанции 3. сохраняешь текущую позицию объекта в той же переменной