我遇到了一些问题,需要一个关于游戏算法的解决方案。谷歌上的大部分解决方案只适用于整个瓦片。在我的游戏中,单位可以占据瓦片内不同的位置,例如左上角、中间、右下角等(2/3),即(2.2/3.1)、(2.5/3.5)、(2.8/3.9)。如果它们从(2.2/3.1)移动到(5.7/4.1),我需要检查路径中是否有障碍物。我的当前算法是:1.从(2.2/3.1)开始;2.计算运动的角度(例如70度);3.向该方向移动0.1步;4.检查我所在的瓦片(floor(p.X)/floor(p.Y));5.从第2步重复执行。这个算法可以工作,但我觉得它不太高效,因为障碍物只能是整个瓦片,而不是瓦片的一部分(单位不会相撞)。如果我增加步长,我会错过一些仅轻微穿过的瓦片(例如只穿过左下角最低点)。即使步长为0.1,也有可能错过障碍物。我试图找到一个解决方案,以获取子地图(所有带有角落(floor(start.X)/floor(start.Y))和(ceil(start.X)/ceil(start.Y))的瓦片),穿过每个瓦片并通过数学计算检查是否被穿过。不幸的是,我似乎缺乏这个检查所需的数学知识。我的最后一个想法是将一个瓦片的所有4条边作为一条线,并进行线相交,但这似乎比我的原始方法更慢。有什么建议吗?谢谢。