|
3D-программирование Вопросы, касающиеся программирования 3D мира |
16.04.2008, 16:58
|
#1
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Бот-самолёт
Ктото уже делал леталку?
Если да то прошу помочь мне.
Необходимо научить бота уворачиваться от столкновения со мной, и с другими ботами.
Как это лучше делать?
Может быть у вас есть пример?
----------------------------------------
Те способы уворота которые реализовывал я, меня не устраивают.
-----------------------------------------
Да и как боту лучше вести преследование меня?
Я просто поворачиваю бота на себя.
|
(Offline)
|
|
16.04.2008, 17:19
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Бот-самолёт
я делал сетевую леталку. уворачивания не делал, ибо ето нафиг мне не упало.
|
(Offline)
|
|
16.04.2008, 18:10
|
#3
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Бот-самолёт
Без уворачивания ведь враг со мной столкнётся!
И друг с другом будут сталкиваться...
Я пытался использовать турнентити, и танслатеентити, если я на
определённом расстоянии попадаю в угол обзора бота.
Но какието фуфловые увороты получаются...
Кстати исходнячка не осталось? Яб не против посмотреть.
|
(Offline)
|
|
16.04.2008, 18:19
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Бот-самолёт
неа. гдето на форуме был, ищи Flyer.
фактически фраг бот должен определять углы между целью, если сумма квадратов углов становится меньше какого то определеного значения то надо сворачивать в сторону, противоположную углу. можеш ввести состояние "сворачиваемости".
|
(Offline)
|
|
16.04.2008, 18:54
|
#5
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Бот-самолёт
Ну у меня вот так:
If useru=2
If EntityDistance(a\entity,User)<140 And Userspeed#>0 And Abs(dx#)<20 And stopbot#=0 Then
TranslateEntity a\entity,0,+speed1#,0
v#=0.7
End If
End If
Исходняк твой посмотрел, жаль не пригодится...
Последний раз редактировалось Crystal, 16.04.2008 в 19:03.
|
(Offline)
|
|
16.04.2008, 23:02
|
#6
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Бот-самолёт
Мож кто хоть теорией поведения летающего бота поделится?
|
(Offline)
|
|
17.04.2008, 11:41
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Бот-самолёт
function SmotritelZaBotom(bot,ent)
return DeltaYaw(bot,ent)*DeltaYaw(bot,ent) + DeltaPitch(bot,ent)*DeltaPitch(bot,ent)
end function
...
for b.bot=each bot
if SmotritelZoBotom(b\ent,player)<30 then юла-юла-юла
next
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.04.2008, 15:40
|
#8
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Бот-самолёт
в аттаче отрывок какой то статьи на тему самолетов, там вроде объясняется как нужно делать ИИ бота, но вот жаль статья не полная
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
|
|
17.04.2008, 18:15
|
#9
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Бот-самолёт
return DeltaYaw(bot,ent)*DeltaYaw(bot,ent) + DeltaPitch(bot,ent)*DeltaPitch(bot,ent)
|
Пардон я чтото не понял, зачем тут идёт это умножение и сложение?
Я угол так просто проверяю:
dx#=DeltaPitch(a\entity,User)
dy#=DeltaYaw(a\entity,User)
|
(Offline)
|
|
17.04.2008, 18:37
|
#10
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Бот-самолёт
нам жэ нужно узнать попал ли объектв конус перед ботом? или в пирамиду? если в конус- то мы должны вычеслить сумму квадратов по каждой оси.
|
(Offline)
|
|
17.04.2008, 23:44
|
#11
|
Разработчик
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений (для 122 пользователей)
|
Ответ: Бот-самолёт
А что именно нужно, способность бота правдоподобно реагировать на цель или уходить от столкновений?
Я сам дольше всего продолбался именно с первым, и кое-как отшлифовал, работает так что если цель находится за полем зрения или сзади, делаем хаотичный маневр, походу проверяем не попал ли таргет в поле зрения. Как только таргет примерно впереди - следуем прицелом за ним и стреляем с припуском в надцать градусов. таким образом боты перестают крутиться вокру друг-друга и в то е время не летают прямо если ты сзади.. Функцию постить не буду, потому как там завязка на треть всего кода.
А по поводу второго у меня работала ф-ция, боты либо облетали либо останавливались перед друг-другом. Но возможно я ее редактировал, так что не гарантирую работоспособность, вобщем просто пример:
Function Scan(ou,tu);+
u.Unit=Object.Unit(EntityName(ou))
d=20;+u\mass Shr 1;*.5
Touch1= EntityPick (u\scan,d);:RotateEntity u\scan,0,0,0
If tu And u\speed#>1 PointEntity u\scan,tu:Touch2= EntityPick (u\scan,d)
If (Touch1 Or Touch2) Then
RotateEntity u\scan,-15,0,0,0
;если ПОМЕХА ВВЕРХУ тогда поворачиваем сканер ВНИЗ на 15
If EntityPick(u\scan,d) Then
RotateEntity u\scan,15,0,0,0
;если ПОМЕХА ВНИЗУ тогда поворачиваем сканер ВВЕРХ-ВЛЕВО на 15-15
If EntityPick(u\scan,d) Then
RotateEntity u\scan,-15,-15,0,0
;если ПОМЕХА ВВЕРХ-ВЛЕВО тогда поворачиваем сканер ВНИЗ-ВПРАВО на 15-15
If EntityPick(u\scan,d) Then
RotateEntity u\scan,15,15,0,0
;если ПОМЕХА ВЕЗДЕ тогда ОСТАНАВЛИВАЕМ ДВИГАТЕЛЬ
If EntityPick(u\scan,d) Then
RotateEntity u\scan,0,0,0,0
i = 5
Else
RotateEntity u\scan,0,0,0,0
i = 4
EndIf
Else
RotateEntity u\scan,0,0,0,0
i = 3
EndIf
Else
RotateEntity u\scan,0,0,0,0
i = 2
EndIf
Else
RotateEntity u\scan,0,0,0,0
i = 1
EndIf
i = 1
Else
RotateEntity u\scan,0,0,0,0
i = 0
EndIf
Return i
; u.Unit_humans=Object.Unit_humans(EntityName(t))
; If (u\state=9) Then Return 1 Else Return 2
End Function
непомню что я там с ней делал, но вобсчем принцип понятен. Скан это хайднутый пивот внутри корабля
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.04.2008, 18:59
|
#12
|
Знающий
Регистрация: 06.10.2007
Сообщений: 225
Написано 15 полезных сообщений (для 21 пользователей)
|
Ответ: Бот-самолёт
Сообщение от H@NON
в аттаче отрывок какой то статьи на тему самолетов, там вроде объясняется как нужно делать ИИ бота, но вот жаль статья не полная
|
Попробуй найти все части.
|
(Offline)
|
|
19.04.2008, 22:13
|
#13
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Бот-самолёт
Сообщение от Bagration
Попробуй найти все части.
|
Еслиб еще хоть что нить знать об том что ты ищешь, тогда бы можно было попытаться, а так гиблое дело...
|
(Offline)
|
|
20.04.2008, 17:01
|
#14
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Бот-самолёт
Раздули проблему на ровном месте
я делал леталки с незапамятных времен
Последняя с ньютоном - практически готовая игра. но заброшена без графики. (меню, режимы игры и тд все есть)
Обычный примитивный ИИ без каких то там сложных взаимодействий
Если сделать с состояниями, так вообще просто.
Конкретизируй проблему.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:38.
|