跳到主要内容

移动

图标

Move_image1.png

功能

AgentCell空间中的运动

移动方式

  • 转向:Agent调整朝向
  • 进退:Agent按现有朝向(Angle内置属性)以指定量前进或后退
  • 平移:Agent保持朝向不变下向任意方向移动
提示

移动是物理性质的运动,与置于组件的区别详见其章节。

设置方法

Move_image2.png

先指定运动形式,再设置该形式的运动参数细节

指定运动形式

下拉选择,说明详见下

Move_image3.png

各运动形式的设置

提示

理解各种运动形式均以Agent流程执行者为"主语"。

左转

Move_image4.png

  • 功能

    逆时针转动一定角度,设置为负值时则会顺时针转动其绝对值

  • 操作

    指定角度:输入栏接受一个返回Number格式数据的任意表达式

右转

  • 类似左转、与之相反,略

面向实体

Move_image5.png

  • 功能

    转动朝向,以面对一个指定的同一个空间Agent或Cell实体

  • 操作

    指定目标实体:输入栏接受一个返回Agent/Cell Entity格式的任意表达式

面向坐标

Move_image6.png

  • 功能

    转动朝向,以面对指定坐标

  • 操作

    指定坐标:输入栏接受一个返回[Number, Number]的任意表达式

  • 注意

    • 当Cell为环绕模式时,该坐标可以是任意坐标
    • 非环绕模式时,必须在当前Cell空间的坐标范围内

面朝角度

Move_image7.png

  • 功能

    转动朝向,以面向指定的绝对方向角度(东0°北90°)

  • 操作

    指定角度:输入栏接受一个返回Number的任意表达式

前进

Move_image8.png

  • 功能
    • 按当前朝向,不断以指定步长移动,直到停止在指定距离或最大可移动距离。移动距离为负时表示后退
    • 当Agent移动到达边界时,如果空间环绕,将继续移动;如果空间非环绕,则将停止在最后一个可行步
  • 操作
    • 指定距离:输入栏接受一个返回Number的任意表达式
    • 指定步长:输入栏接受一个返回正值Number的任意表达式,默认等于距离的绝对值
模型案例

Agent从一个水平不环绕的2D空间的中心原点出发,以距离为1,步长为0.2,水平向右不断运动,Cell的最大x坐标为5,那么它终将被迫停止在(5.4,0)处(最后一个可走步的状态)。

提示
  • 通常应设置步长小于等于移动距离绝对值,当步长大于距离时,与等于距离效果一致。
  • 关于步长与距离的关系,后退、向坐标平移与前进类似。

后退

  • 类似前进,与之相反,略

向坐标平移

Move_image9.png

  • 功能

    保持朝向不变下,向指定坐标平移

  • 操作

    • 指定坐标:输入栏接受一个返回[Number, Number]的任意表达式
    • 指定距离:输入栏接受一个返回Number的任意表达式
    • 指定步长:输入栏接受一个返回正值Number的任意表达式,默认等于距离的绝对值

组件输出数据

角度

  • 完成运动后,Agent朝向的变化总量,正值为逆时针
  • 返回Number格式
  • 后继对象公式计算以"move_component_name.Angle"形式访问
  • 本组件动作后计算"This.Angle"形式访问

距离

  • 完成运动Agent后经过的实际距离
  • 返回Number格式
  • 后继对象公式计算以"move_component_name.Distance"形式访问
  • 本组件动作后计算以"This.Distance"形式访问
提示
  • 系统提供的移动输出是变化的总量
  • 一个面朝0°方向的Agent从[0,5]出发,在宽为11Cell世界中前进,穿越左边界1次后停在了[0,6],那么输出的距离将是12,而不是1
  • 输出角度变化量也类似
  • 从这个角度看,你可以理解置于组件瞬间改变Agent空间位置所以没有运动量,而Move都是需要耗时的连续性的物理运动, 所以有运动量的输出

案例

模型案例

狼在环绕的草原上连续移动