现在,我正在使用Bresenham的线算法来获取视线。问题是我发现了一个边缘情况,玩家可以透过墙壁看。当玩家注视着墙的两个角之间,且在另一侧有特定角度的间隙时发生。
我想要的结果是将两堵墙之间的瓷砖标记为无效。
修改布雷森汉姆线算法以解决此问题的最快方法是什么?如果没有好的解决方案,是否有更合适的算法?任何想法都欢迎。请注意,该解决方案还应该能够支持3d。
编辑:我的简单解决方案是检查直线的x和y坐标更改时两个角是否都闭合。有关完整产品的工作源代码和交互式演示,请参见http://ashblue.github.io/javascript-pathfinding/