позиция в гонках

Общие вопросы о Unity3D

позиция в гонках

Сообщение Sality 29 янв 2013, 10:15

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


Заранее спс.
Аватара пользователя
Sality
Старожил
 
Сообщения: 771
Зарегистрирован: 26 ноя 2011, 15:31
Откуда: Украина

Re: позиция в гонках

Сообщение seaman 29 янв 2013, 11:39

По пройденному расстоянию, не?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: позиция в гонках

Сообщение AndreyMust19 29 янв 2013, 11:54

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

Вот пример, вид сверху:

race_trace.png

Черный контур - трасса
Зеленые прямоугольники - триггеры
Зеленый кружок - координаты transform'а объекта с триггером.
Единственное что - линию старта лучше расположить на границе 2-х триггеров, чтобы заодно фиксировать начало нового круга или финиш.
У вас нет доступа для просмотра вложений в этом сообщении.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: позиция в гонках

Сообщение Sality 29 янв 2013, 12:27

seaman писал(а):По пройденному расстоянию, не?


Конечно нет. Я могу по кругу намотать столько же, сколько и вы ехав по трассе.

AndreyMust19
Хм.. очень интересная идея. Обязательно отпишусь о результате.
Аватара пользователя
Sality
Старожил
 
Сообщения: 771
Зарегистрирован: 26 ноя 2011, 15:31
Откуда: Украина

Re: позиция в гонках

Сообщение bojlahg 29 янв 2013, 12:31

Можно еще сплайны использовать + чекпоинты в определенных местах (на поворотах и развилках).
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: позиция в гонках

Сообщение jetyb 29 янв 2013, 16:46

Представить путь ломаной, а позицию искать в виде ближайшей точки ломаной к игроку.
Искать не по всем отрезкам, а по 2-3 ближайшим, это еще защитит от срезания пути.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: позиция в гонках

Сообщение LightWorld 03 фев 2013, 12:59

Если по времени попробовать, то есть стартанули время пошло, и уже между ними сравнивать у кого время меньше всех тот первый, у кого больше чем у первого тот второй или последний.

Скрытый текст:
не знал как сформулировать вроде понятно :)
Аватара пользователя
LightWorld
UNIт
 
Сообщения: 96
Зарегистрирован: 14 сен 2011, 09:21
Откуда: г. Зарафшан

Re: позиция в гонках

Сообщение Diab10 03 фев 2013, 13:17

LightWorld писал(а):Если по времени попробовать, то есть стартанули время пошло, и уже между ними сравнивать у кого время меньше всех тот первый, у кого больше чем у первого тот второй или последний.

Скрытый текст:
не знал как сформулировать вроде понятно :)


Вообще то у всех время одно будет))))
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: позиция в гонках

Сообщение LightWorld 03 фев 2013, 15:38

Diab10 писал(а):Вообще то у всех время одно будет))))


мда вот это я сморозил аж стыдно :-ss , это получится сделать только в конце гонки или в конце каждого круга :)
Аватара пользователя
LightWorld
UNIт
 
Сообщения: 96
Зарегистрирован: 14 сен 2011, 09:21
Откуда: г. Зарафшан

Re: позиция в гонках

Сообщение Medveckij 03 фев 2013, 19:46

Может Vector3.Dot? Отрицательное - перебрасываем в списке на строку ниже. Положительное - поднимаем выше.

Вот вам и смена позиций.

А для большого количества объектов реализуем циклами.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: позиция в гонках

Сообщение Sality 04 фев 2013, 00:15

По поводу ломаной смутно представляю как реализовать.
Замерять время не вариант ))) оно может быть как большим так и маленьким.
Vector3.Dot проверяет угол между векторами на схлопывание. Такой метод подошел бы если б трасса была овальной или круглой. Тогда из центра трассы можно было-бы мерить углы между юзерами. Но как только трасса станет кривой будут моменты, когда углы схлопнутся а в реале юзеры будут неодинаково находится. Эта идея пока на втором месте по работоспособности.

На первом месте как мне кажется способ с секторами и точками в начале секторов. Пока делал миникарту все обдумывал. На днях сяду пробовать реализовывать.

Спс всем кто высказал свое мнение и идеи ;)
Аватара пользователя
Sality
Старожил
 
Сообщения: 771
Зарегистрирован: 26 ноя 2011, 15:31
Откуда: Украина

Re: позиция в гонках

Сообщение Friend123 04 фев 2013, 10:30

Я реализовал такую систему, как написал AndreyMust19, т.е. с помощью триггеров-чекпоинтов. Определяет очень четко.
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: позиция в гонках

Сообщение 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<> который отсортирован уже и можно рисовать кто за кем едет или вытащить конкретную позицию конкретной тачки
В коде некоторые коменты
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
Sality
Старожил
 
Сообщения: 771
Зарегистрирован: 26 ноя 2011, 15:31
Откуда: Украина

Re: позиция в гонках

Сообщение newArray 03 авг 2013, 20:11

Тоге очень надо. Тога тебе везет как утопленику.
newArray
Адепт
 
Сообщения: 1226
Зарегистрирован: 14 фев 2013, 07:03
Откуда: оттуда

Re: позиция в гонках

Сообщение toga94 08 авг 2013, 20:35

newArray писал(а):Тоге очень надо. Тога тебе везет как утопленику.

да у меня не получается Мултиплайерное Гонку сделать. толка потому что не могу написат местоположения игрока :D
_ttp://d1vmp8zzttzftq.cloudfront.net/wp ... 0x1027.jpg
_ttp://www.azembassy.ma/img/Baku%20views/Baku.jpg
_ttp://www.traveller.az/images/hotel_azerbaijan.jpg
Аватара пользователя
toga94
UNITрон
 
Сообщения: 287
Зарегистрирован: 26 авг 2012, 16:23
Откуда: Baku,Azerbaijan
Skype: Azecombats.com
  • Сайт

След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 8