如何确保Roguelike的视场对称?


10

我正在研究类似Rogue的游戏,为此,我创建了一个光线跟踪/投射视场(FoV)算法,该算法包括将Bresenham线绘制到实心圆中的每个点。它没有伪影(并且相当有效),但是却缺少我的一个重要要求:对称(如果您可以看到怪物,那么它也必须能够看到您)。

在此处输入图片说明

这是我的代码的非对称行为的示例。在左图中,我站在一个角落(红色的“ X”块=墙)。我可以看到右上方的图块。但是,如果我移至其中一个图块(右图),将无法再看到我所来自的图块。

我认为我可能会追求某种形式的“ 允许视野”,但这仅仅是因为Roguebasin的文章建议允许对称。是否存在获取对称性的替代方法?


1
只需在测试可见性时确保视点与将射线投射到的位置相同即可。
MichaelHouse

Answers:


8

似乎当眼睛在单个固定点上时可以看到其中的任何点时,都包括一个正方形。

但是,只有在看到正方形的中间时才应包括正方形(假设“眼睛”也在中间)。或者,如果可以看到包含任何内容的光线,则可以从起始正方形的每个角到被测试正方形的角绘制光线。

关键是正方形的命中框也应该是眼睛必须位于的所有位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.