Sality 03 авг 2013, 19:36
Если это облегчит кому то реализацию, этой задачи, выложу сообщение, которое кидал одному нашему форумчанину, не знаю разобрался он в моей писанине или решил сам написать, но когдато оно работало и довольно надежно)) воjбщем вот описание и небольшой скрипт:
Вообщем
- по всей зоне расставляете прямоугольные тригеры checkPoint, в начале каждого тригера ставите поинтер (пустой обьект, от которого будет считатся дистанция) этот обьект называем допустим pointer и делаем его ребенком чекпоинта. Обязательно ставим его в начало чекпоинта.
- в зоне финиша ставим еще один триггер например finishTrigg
- придумываете произвольный класс, который должен просто содержать номер чекпоинта например ChInfo. В нем одна интовая переменная которая содержит номер чекпоинта. Цепляем этот класс на checkPoint.
- Берем мой класс LiderBoard и цепляем на какой нибудь общий обьект, чтоб к этому скрипту был доступ от всех тачек.
Итак: У тачки в любом скрипте заводите несколько переменных это текущий круг (leps), текущий чекпоинт (checkpoint), и дистанция до pointer в текущем чекпоинтере (distanse).
(упускаю теорию как настраивать триггеры чтоб они работали, если что обьясню)
Тачка ваша стартует, по умолчанию нулевой круг, пересекает первый чекпоинт и вы тут же записываете его номер в свою переменную (checkpoint) и сразу же начинаете в апдейте или пару раз в секунду записывать в переменную (distanse) расстояние от тачки до pointer в этом чекпоинтере.
И в таком режиме вы едите по трассе попадая в каждый чекпоинт и постоянно замеряя дистанцию до поинтера в текущем чекпоинте. Как только вы пересикаете триггер финиша делается leps++
Теперь самое интерессное, каждый кадр или в курутине вы вызываете метод UpdateUserPositions() в LiderBord
передаете туда текущий checkpoint, leps, distanse и последним параметром уникальный id тачки (если вы работаете с сеткой то без этого никак)
вы можете чуток переделать алгоритм и убрать id
В курутине UpdateLiderBoard() вы получите List<> который отсортирован уже и можно рисовать кто за кем едет или вытащить конкретную позицию конкретной тачки
В коде некоторые коменты
У вас нет доступа для просмотра вложений в этом сообщении.