此函数计算实例从其当前位置和方向到xgoal ygoal参数指定的位置的路径。它使用指定的步长,同时尝试避免与所有实例或仅与那些标记为固体的。与函数mp_potential_step()一样,它使用潜在的字段步骤来完成此操作,并且可以通过函数mp_potential_settings()修改执行此操作的方式。指示的路径必须已存在,并且将被新路径覆盖。该函数将返回是否找到路径(true)或否(false)。
为了避免函数永远继续计算,您需要提供大于1的系数-如果无法找到短于此系数乘以开始和目标之间距离的路径,则函数将停止并报告失败。系数为4通常已经足够好了,但是如果你期望长时间的绕道,你可能会让它更长。如果失败,仍会创建一条路径,该路径沿目标的近似方向运行,但不会到达目标。
注意:此函数不会移动实例。它只设置路径,您必须使用Path函数进行移动。
mp_potential_path(path, xgoal, ygoal, stepsize, factor, checkall)
参数 | 类型 | 描述 |
---|---|---|
path | Path Asset | 函数要使用的路径的索引 |
xgoal | Real | 目标x位置。 |
ygoal | Real | 目标y位置。 |
stepsize | Real | 实例每步移动的速度(以像素为单位)。 |
factor | Real | 此数字用于防止无限循环。应大于1。有关详细信息,请参阅函数说明。 |
checkall | Boolean | 是检查所有实例(true)还是只检查实例(false)。 |
path = path_add();
mp_potential_path(path, obj_Player.x, obj_Player.y, 3, 4, 0);
path_start(path, 3, 0, 0);
上述代码创建新的路径资源并将其索引存储在变量"路径"中。然后在具有此代码的对象和对象"obj_Player"之间使用mp_potential_path生成路径,检查碰撞以及房间中的所有实例。最后,它沿着该路径启动对象,即使函数未能返回到"obj_Player"的完整路由。