mp_potential_settings

mp_potential_函数使用许多可以使用此函数更改的参数执行其工作。在全局范围内,该方法的工作原理如下:它首先尝试直接向目标移动,然后查看前面的若干步骤,这些步骤可以使用参数"aahead"(默认值为3)进行设置。减小此值意味着实例将在以后开始更改方向,因为它远远没有"看到",而增加此值意味着它将提前开始更改方向。如果此检查导致碰撞,则会开始向理想直线方向的左右两侧查看更多方向。它以大小为"rotstep"(默认值为10)的步长执行此操作,并且减少此操作会使实例具有更多的移动可能性,但由于需要更多的处理能力,因此速度会更慢。

参数"maxrot"更难解释!实例具有当前的移动方向,maxrot(默认值为30 )表示允许在一个步骤中改变当前方向任一侧的方向的程度。因此,即使它可以直接向目标移动,也只有在它不违反最大方向变化的情况下才会这样做。如果将maxrot设置为较大的值,则实例可以在每个步骤中更改大量方向,这将使查找短路径变得更容易,但路径将更难看,也不太自然。如果将该值设置为较小值,则路径会更平滑,但可能需要较长时间的绕行(有时甚至无法找到目标)。最后,当无法执行任何步骤时,行为取决于参数"现场"的值。如果onspot为true(默认值),则实例将在其点上旋转"maxrot"指示的量,如果为false,则根本不会移动。将其设置为false对于例如汽车非常有用,但会降低实例找到路径的可能性。

 

语法:

mp_potential_settings(maxrot, rotstep, ahead, onspot)

参数类型描述
maxrotReal实例可以在步长中旋转的当前方向的任一侧的度数
rotstepReal实例可以检查碰撞的当前方向任一侧的度数
aheadReal实例可以检查是否发生碰撞的提前步骤数。较大的值比较小的值慢。
onspotBoolean使用此选项可在找不到路径时允许实例在点上旋转(true)或(false)

 

返回:

N/A

 

例子:

mp_potential_settings(45, 5, 5, 0);

以上代码将mp_potential_函数设置为使用以下设置:实例可以向前看五步,每步改变方向45度,如果存在障碍物则查看当前方向任意一侧的5度,并且不会在发生碰撞的地方旋转。