任何人都可以解释视线在2d中是如何工作的吗?这对我的2d实验来说真的很有帮助。我正在进行的实验是一个简单的2d模拟。玩家从一个地方移动到另一个地方my world exactly looks like this。我成功地从一个方向点到另一个方向(A到G)完成了角色移动,我的目标是 - 当角色通过每个点时,它必须在该区域离开到下一个点之前执行一些搜索。要实现我觉得方法点是更好的解决方案,任何人都可以帮助我。谢谢!
编辑:
一旦玩家进入房间/检查站,我将把用户带到下一个场景like this
拾取器放置在画布上的某些位置,我的播放器必须全部收集并离开该区域 - 返回地图场景。
答案 0 :(得分:7)
我不明白你的段落,但回答你的问题(假设我们想知道敌人是否可以在自上而下的游戏中看到玩家)
检查玩家是否处于敌人的视线范围内。我们通过计算(绝对值) angle between来做到这一点。敌人的视线矢量和vector spanning between the enemy and the player。如果是0°,则敌人面向玩家。如果它是180°,敌人就会远离玩家。检查它是否&lt;比如30°,给敌人一个60°的视锥(或者<45°,使敌人的视锥角为90°)。
检查敌人和玩家之间是否有任何东西。这归结为检查a collision between墙壁(或其他任何东西)和跨越敌人的线段和玩家。
请注意,如果墙壁很多,检查所有墙壁的碰撞可能会非常昂贵。将搜索范围缩小到只有几个对象称为修剪,超出了本答案的范围(有关详细信息,请参阅here)
答案 1 :(得分:1)
视线可能是一种非常昂贵的算法。目标是确定两个点(眼睛和物体之间)是否存在物体,你可以说。
要做到这一点,你必须得到所有潜在对象的列表(QuadTree可能对此有用,http://en.wikipedia.org/wiki/Quadtree)并测试每个对象以查看它们是否与眼睛之间的线相交和对象。
您可能想要研究寻路:http://en.wikipedia.org/wiki/Pathfinding