一个对象位于A并想要移动到B。我想在那里计算一个移动向量,它不会在数组 C中要避免的点的距离 D内移动。
因此,如果移动向量 (BA) 归一化并乘以对象速度将使其在 C 中任何点的 D 范围内,则该向量将旋转以使其不旋转。
这是在两个维度。此外,如果此操作有名称,请自行发表评论或编辑此问题,因为我不知道该怎么称呼它。
此外,我的第一直觉是将活动区域划分为节点并运行 A*,但我想在这个上尝试数学方法,一些植绒实验给我的印象是它可以完成。
更新(来自评论):这张图片非常接近我想要的解决方案:
假设我们从左边的点开始,我们开始向右转向目标(另一点),我们检测到右边的墙,所以我们停止转动并向前移动。墙不见了,所以我们可以再次开始转向目标,依此类推。我知道这可能会导致对象根本无法到达那里,但我想定义一个行为,不一定是解决方案,如果你明白我的意思的话。
更新 2:将活动区域转换为一组节点可能效率低下。A* 和其他启发式图遍历算法非常适合低维问题。但我想穿越的区域是无限大的,只有少数障碍物散落在其中。节点本身,或者更确切地说是潜在位置,无限小。这当然可以使用某种四叉树进行优化,但我感觉简单的运动矢量以某种方式旋转和插值也可以解决这个问题。