Як я можу забезпечити симетрію поля зору в шахрайському?


10

Я працюю над Roguelike, і для цього я створив алгоритм випромінювання / виливання променів (FoV) поля, який складається з побудови ліній Брезена на кожну точку суцільного кола. Це артефакти без (і досить ефективні), але він відсутній у моїй важливій вимозі: симетрія (якщо ви можете побачити монстра, він також повинен бути здатний бачити вас).

введіть тут опис зображення

Ось приклад несиметричної поведінки мого коду. На лівому зображенні я стою в кутку (червоний блок "X" = стіна). Я можу побачити верхню праву плитку. Однак якщо я перейду до однієї з цих плиток (зображення праворуч), я більше не бачу плитки, з якої я прийшов.

Я думаю, що я можу бути після форми дозволеного поля зору , але лише тому, що стаття про розбійника припускає, що це допускає симетрію. Чи є альтернативні засоби для отримання симетрії?


1
Просто переконайтесь, що точка зору знаходиться в тому ж положенні, що і положення, в яке ви кидаєте промінь, перевіряючи видимість.
MichaelHouse

Відповіді:


8

Здається, ви включаєте квадрат, коли ви можете бачити будь-яку точку в ньому, поки око знаходиться на єдиній фіксованій точці.

Однак ви повинні включити квадрат лише тоді, коли ви зможете побачити його середину (припустимо, що "око" також знаходиться в середині). Або ви можете намалювати промені від кожного кута початкового квадрата до кутів випробуваного квадрата, якщо ви бачите будь-який з будь-якого, тоді включіть.

Ключовим моментом є те, що хітбокс квадрата також має бути всіма місцями, де повинно бути око.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.