![]() |
Здравствуйте. вот делаю тут аля-GTA 4 :lol: , помогите с проблемой, как в играх такого рода создано уличное движение. подскажите кто знает. можете даже кодик подбросить :@ . спасибо что прочитали хоть :unsure: :'((
|
Хоть какая-то, но эмуляция интеллекта тут должна быть.
Например - тупо расставить вейпоинты на карте и закодить алгоритм движения по ним. |
+алгоритм остановки на светофорах и перед людьми.
|
надо делать карту улиц и пусть машинки катаются по улицам... учитывая правила дорожного движения
я лично невидел чтобы была какаята закономерность в движении машин в играх типа gta кстати надо еще задать тип поведения водителя... точнее учитывает он правила дорожного движение или нет еще надо подумать над обездами и прочее вообщем сложновато ето зделать |
Цитата:
|
ну и какие там закономерности ? чем толще дорога - тем больше по ней прется машин
и усе |
Цитата:
если ты играл в gta то ты заметил бы , шта все машины поварачивают на определённых поворотах абсолютно по одним и тем же вейпоинтам... и едят по прямой тоже по ним же и т.д. и т.п. |
Цитата:
|
Цитата:
|
ко всему вышесказанному хочу добавить, что машины в таких играх типа GTA - динамические, т.е. они есть только там, где ты ездишь... соответственно, кроме примитивных правил дорожного движения (можно легко основать на WayPoint'ах), должны работать функции добавления и удаления машин с карты...
на счет правил, думаю там много думать не надо будет, просто натыкать вейпойнтов и проверять занятость вейпойнта (типа если следующий (или допустим первый слева или справа на перекрестке, чтоб уступить дорогу) занят, то стоять и ждать... также светофоры, просто помечают принудительно вейпойнт занятым и машины ждут)... ИМХО а объезды, характер водителей и т.п. это уже надо будет наворачивать когда вышесказанное будет работать... :) |
спасибо за обсуждение. Но как это все сделать.
Смотрите: я сделал карту с дорогой поставил на перекрестках кубы (вейпоинт) прикосаясь к которому машина поворачивает, НО КАК ОПРЕДЕЛИТЬ, где у нее перед. и едет ли она по дороге |
]Может начнёшь с чего-нибудь попроще?[
Повернуть машину "лицом" к вейпоинту поможет это dyaw# = DeltaYaw (car,WayPoint[k]) TurnEntity car,0,dyaw#,0 при условии, что WayPoint[k], это entity - к-ый вейпоинт НО поворот будет мгновенным! А то, что она по дороге едет, это вроде и не нужно знать, ведь вейпоинты стоят на дороге, значит при движении между вейпоинтами тачка будет ехать по дороге. Если нужно поворачивать (относительно плавно), то можно примерно так сделать dyaw# = DeltaYaw (car,WayPoint[k]) If Abs(dyaw#)>=carSpdY# TurnEntity car,0,carSpdY#,0 Else TurnEntity car,0,dyaw#,0 EndIf Теперь к этому добавляем MoveEntity car,0,0,carSpdZ# И получаем очень настырную машинку, которая будет рулить сама! |
говорилже надо делать карту дорог, а не набор вейпоитов !
|
Цитата:
|
еще скажи что нарисовать рисунок по точкам легче чем по векторам
ps. мне лично пофиг, как и где будет ето реализовано но по опыту предмереного мышления скажу что лутче карта дорог если вас всештаки так прет ети вейпоинты то разбиваем карту дорог на прямые линии, вот концы етих линий и будут вашими вейпоинтами НО при таком подходе будут просто ужасные повороты ето раз и при кривых дорогах будет просто дофигища вейпоинтов |
Цитата:
не думаю, что там карта орог сделана... было-бы глупо... и все нормально выглядит... зависит конечно от программиста который это будет делать... на счет сглаживания поворотов, можно за каждым вейпойнтом зацепить спецпроцедуру типа формулу по которой машина будет ехать до следующего вейпойнта... итого две функции для каждого вейпойнта... и вуаля! плавные повороты различной сложности :) |
за гостя я был.
Чем вам мой метод не понравился, он даёт плавный поворот - за счёт одновременного использования команд поворота и движения :dontknow: |
Цитата:
2 Jimon: нужно еще помнить конечный пользователь не оценивает программирование, поэтому навороченный интеллект для машин которые ты будешь видеть гоняя по улицам всего несколько секунд (каждую машину) имхо нерентабельно. Это-же тебе не стратегия, где надо продумать перемещение юнитов по карте... :) |
для нашего гостя - лутче пусть делает через вейпоинты
лутче дайте ему код - хождение кубика через определеные вейпоинты тогда он поймет что делать лутчее сглаживание через половину кривой безье - имхо |
Что значит дайте?! - Сам дай!
Я всё что написал понимаю. Дай код с кривой безье на зацЕн, потом поговорим что лучше. |
Цитата:
зря в корень! посмотри шере... вейпоиты лучше ... имхо... :) |
я лично щас непрограмлю под blitz3d , cpp рулит ;)
|
Цитата:
|
Да че тут сложного? Делаешь 2 вейпоинта - начали и конца поворота. Если прошел один, но не прошел другой, крутишь тачку каждый кадр. Самый простой способ ИМХО. Главная проблема с тачками - как заставить их появлаться и исчезать на нужном расстоянии, не для всего же города движение рассчитывать!
|
Часовой пояс GMT +4, время: 21:04. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot