Skip to content

寻路

寻路 行为允许将对象移动到所选目的地,并标记物品为障碍物。被标记为障碍物的对象将被移动对象避开。

选择要避开的对象:"Obstacle for Pathfinding" 行为

通过使用行为 "Pathfinding obstacle" 来作为障碍物。

当行为添加到对象时,可以修改一些属性:

属性

  • 不可通过: 如果启用,障碍物将不可通过。移动对象将避开它们,永远不会穿过它们。
  • 代价: 如果障碍物不是不可通过的,则可以为障碍物设置代价。移动对象在寻找最佳路径到达目的地时,会更倾向于避开代价高的障碍物。例如,河流可能具有一定的代价。如果可能的话,移动对象会避开它。然而,如果没有其他绕过河流的方法,或者与其他地区相比,河流的代价较低,则移动对象会通过它(而不是爬上类似山的高代价区域)。如果我们把鳄鱼放进河流并增加其代价,移动对象可能会决定爬上山。

提示

障碍物可能会占用比预期更多的空间,因为使用障碍物周围的框而不是碰撞蒙版扩展可以解决这个问题。

避开障碍物移动对象:"Pathfinding" 行为

"Pathfinding 行为" 允许计算对象到目的地的最短路径,并可选择将对象移动到此目的地,同时避开所有具有"Obstacle for Pathfinding" 的对象。

在为对象添加行为后,可以自定义一些选项:

属性

  • 加速度: 在沿路径移动时,对象加速的速度。
  • 允许对角线移动: 设置对象是否可以对角线移动。
  • 角度偏移: 如果精灵朝向错误,可以设置角度偏移。
  • 额外边框大小: 设置对象周围的边框大小。此设置确定对象可以移动到障碍物多近。
  • 最大速度: 对象可以沿路径移动的最大速度。
  • 旋转对象: 如果不希望对象在移动时旋转,禁用对象的旋转。
  • 旋转速度: 设置对象旋转的速度。
  • 虚拟单元格的高度和宽度: 路径是使用虚拟网格生成的。可以更改此虚拟网格的单元格大小。当网格较小时,移动更精确,可以在对象之间找到路径,但对设备的计算量更大。

注意

较小的单元格大小意味着更多的计算,因此尽量保持较大的大小。

添加一个移动寻路对象的动作

要启动寻路移动,添加动作"移动到位置",并指定要移动对象到的位置。它将根据行为属性中定义的特性进行移动。如果要在游戏过程中更改对象的移动方式,可以使用动作更改这些属性。

动作

警告

"移动到位置" 动作只需要运行一次。如果没有条件运行此动作,它将尝试在每一帧重新计算路径。您的对象将不会移动,并且这将为设备生成大量的计算。相反,添加一个确保对象寻路器速度为 0 或尚未找到路径的条件。

示例

提示

查看实际效果! 🎮

在线查看这些示例。

普通寻路行为

在 GDevelop 中打开示例

示例

寻路基础

在 GDevelop 中打开示例

示例

参考

所有动作、条件和表达式都列在 寻路参考页面