Як дізнатися, чи може ворог бачити мого гравця?


15

З огляду на гравця та ворога з позицією та з урахуванням вектора напрямку кожного, як я можу сказати, чи можна «бачити» іншого?

Іншими словами, як я перевіряю, чи одна позиція з напрямком знаходиться спереду або позаду іншої позиції?

У моїх цілях "перед" означає прямо навпроти, або на 90 градусів в будь-яку сторону.


11
Очевидно, що рішення - створити іншу камеру та відтворити сцену з точки зору противника, а потім виконати розпізнавання зображення за результатом для персонажа гравця.
Рікінг

найпростіша нагорода відповіді стосується ...
OganM

3
Хоча коментар Рікінга, ймовірно, задуманий як жарт, це фактично справедливий спосіб зробити це - надання NPC таким самим доступом до ігрового стану, що і гравцеві, а не дозволяти їм отримати доступ до внутрішнього стану гри.
R .. GitHub СТОП ДОПОМОГАТИ ЛИЦЯ

5
@R .. Так, але де ви проводите лінію? Взявши це міркування до своєї логічної кінцевої точки, NPC врешті-решт почуваються здатністю грати і мислити, як людина ... в цей момент вони, ймовірно, раціонально вирішили знову почати обробляти стіни: p
Томас

@Thomas: На практиці я думаю, що ви можете зробити якийсь компроміс, наблизившись до рівня інформації, який вони мали б як гравця, не йдучи до проблеми, щоб його реалізувати таким чином. Прості заходи, такі як правильне тестування на зору зору, обмеження можливості ідентифікації об'єкта за певну відстань тощо можуть пройти довгий шлях.
R .. GitHub СТОП ДОПОМОГАТИ ЛИЦЯ

Відповіді:


17

Точковий продукт двох векторів може сказати вам, стикаються вони чи ні. Перший вектор, ймовірно, може бути напрямком перегляду ворогів, другий повинен бути вектором, що вказує з позиції гравця на позицію ворога.

https://www.youtube.com/watch?v=Q9FZllr6-wY


Ага так, я це переосмислив. Я жонглював 4 векторами, але дуже хочеться вектора від одного гравця до іншого. Відео було дуже корисним, дякую.
izb

Одній важливою деталлю, на мою думку, слід додати до цієї відповіді, це те, що гра також повинна робити радіо-передачу чи щось для того, щоб вони насправді могли бачити гравця (не перекритий стінами тощо)
Т. Кілі

1
@ T.Kiley: це насправді було запропоновано Рікінг у коментарі до питання. Ні, я не думаю, що це жарт. Якщо ваша гра 3D, радіомовлення - це насправді справедливий спосіб зробити це. Просто відведіть сцену з усіма об'єктами чорної текстури, з точки зору ворога, крім гравців та інших важливих об'єктів повинні бути відображені в інших кольорах. Не забудьте вимкнути освітлення та затінення. Якщо отриманий буфер не зовсім чорний, то ви знаєте, що хтось перебуває в полі зору ворога, і ви можете використовувати колір, щоб визначити, які вони об'єкти.
Лежати Райан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.