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


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.