我正在研究类似Rogue的游戏,为此,我创建了一个光线跟踪/投射视场(FoV)算法,该算法包括将Bresenham线绘制到实心圆中的每个点。它没有伪影(并且相当有效),但是却缺少我的一个重要要求:对称(如果您可以看到怪物,那么它也必须能够看到您)。
这是我的代码的非对称行为的示例。在左图中,我站在一个角落(红色的“ X”块=墙)。我可以看到右上方的图块。但是,如果我移至其中一个图块(右图),将无法再看到我所来自的图块。
我认为我可能会追求某种形式的“ 允许视野”,但这仅仅是因为Roguebasin的文章建议允许对称。是否存在获取对称性的替代方法?
1
只需在测试可见性时确保视点与将射线投射到的位置相同即可。
—
MichaelHouse