Questions tagged «line-of-sight»

7
我可以防止对角线运动探索更多地图吗?
在沿着8个方向中的任意一个方向进行完全相同的旋转(棋盘样式规则)的磁贴网格中,是否可以防止对角移动显示比正交移动更多的新磁贴? 例如:您是下图中的红色框。目前,您可以看到绿色的单元格(方形视野)。您可以在八个方向中的任何一个方向上移动一个图块的距离。 如果您向东北移动,您将探索13个新的图块(以蓝色显示)。如果您改为向南移动,则将仅探索7个新图块(以紫色显示)。 如何使每个方向的旅行对探索都同样有利?

4
在基于图块的游戏中查找无遮挡的图块
我正在开发基于2D瓦片的游戏,现在我正在尝试使相当于2D的阴影体积起作用。我在寻找应该投射阴影的表面时遇到了麻烦。从游戏的任何点开始,我都需要找到未被遮挡的面孔或整个瓷砖。 我的问题是,如何在给定一个点的情况下尽快找到这些瓷砖/边缘?

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

2
使用射线投射在二维网格上实现视线的更有效方法?
考虑一个2D的瓷砖网格,以及一个以视线为中心的近似坐标范围(以玩家为中心)。目标是将视线挡在障碍物(即墙)之外。 确定视野中是否有单个单元格是相对简单的:使用布雷森汉姆将光线从玩家投射到目标单元格-如果玩家和目标之间的重叠单元之一是障碍物,则目标单元格不可见。 现在,我的第一个想法是遍历视线中的所有网格单元-但这对我而言似乎效率很低。例如,如果玩家站在墙旁边,并且确定不可见墙外的单元,则可以确定射线之后的所有单元都不可见。 还考虑过将射线投射到视线范围内的每个单元格,然后沿着每个射线迭代每个单元格-但是我将不止一次处理一些单元格。 有更有效的方法吗? 虽然每圈迭代〜50个单元格是一个相对轻量级的计算,但我追求速度-目标是能够在自动播放中每秒循环几圈。因此,我可以做得越高效越好。
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.