forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Поле зрения врага (http://forum.boolean.name/showthread.php?t=16453)

Devilox 08.03.2012 17:50

Поле зрения врага
 
У меня есть игрок и враг, выполняющий определённый набор действий(патруль). Мне нужно каким-то образом задать поле зрения врагу, в котором он сможет видеть игрока и реагировать, но при этом если между ними стоит стена, то реакции врага на игрока нет.
Как мне этого добиться?

pepel 08.03.2012 18:12

Ответ: Поле зрения врага
 
вообще я бы использовал для поля зрения обьемный триугольник.
т.е. прикребляешь меш-триугольник , одной из точек является сам враг. ну тоесть прикрепить к этой точке триугольник.

затем проверяешь c помощью функции meshintersect пересечение объекта игрока и триугольника.

также если есть стена используй linepick

LLI.T.A.L.K.E.R. 08.03.2012 20:24

Ответ: Поле зрения врага
 
Наверное, лучше сразу начать использовать один (из четырёх) физический движок.
Я пробовал вражеское зрение-детектор на :
Bullet Physics wrapper

Devilox 12.04.2012 20:12

Ответ: Поле зрения врага
 
Походу есть ещё вариант: EntityVisible(ent,dest_ent)
только для этого надо стенам добавить EntityPickMode - это чтобы враг сквозь стены не подглядывал :)
А что касается угла обзора, то вот я вытащил из обучалки BlitzSchool:
Код:

If (180 - Abs( DeltaYaw(aEnemies(i)\enemysphere, player))) < 100
Пока работает, может быть кто знает, какие здесь минусы есть?

Жека 13.04.2012 05:21

Ответ: Поле зрения врага
 
Здесь ты перебираешь всех врагов в цикле, т.к. это делается не отдельно а в цикле обновления врагов, то всё нормально. Но если у тебя враги должны видеть ещё и друг друга, чтобы например воевать между разными группами, то мне на ум сразу приходит необходимость использования вложенных циклов (сам не умею по-другому проверять многих со многими).


Часовой пояс GMT +4, время: 14:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot