Language:
Page Info
Engine Version:
Share

蝴蝶

ButterflyHeader.png

关卡中央的两个机械蝴蝶范例用于展示蓝图如何用于创建基础AI行为。蝴蝶将围绕一个指定的中心点飞行,在一段时间内随机修改方向,然后飞回中间点休息。其遇到障碍时将平稳地朝其飞行并着陆,停滞后再次起飞。蝴蝶飞行的时间越长,休息的时间便越长。

蝴蝶蓝图actor自身并不会围绕关卡飞行,实际飞行的是其组件。蝴蝶由两个翅膀网格体组成,它们是一个单一身体网格体的子项。网格体由时间轴节点设置动画,使翅膀扇动、身体上下摆动。事件图表驱动蝴蝶组件向前移动,同时转向朝向半径中的随机点,每隔数秒便选取一个新点作为目标。

一个命名为 Attractor Location 的变量为 Editable,意味着其已对用户公开。此变量也将显示一个3D控件,使其能够四处移动,以确定蝴蝶飞行范围的中间点。在进行一定时间的飞行后,脚本将把蝴蝶重新导向回到此点,以免其飞得过远。

蝴蝶在飞行中时,其将持续在自身前方绘制一个线条追踪来检查障碍物。此线条追踪命中一个表面时,其将提供影响点的位置与法线(表面角度)。然后此数据用于计算蝴蝶着陆时其预测的角度的位置。然后将播放一条时间轴,线性插值节点将平滑地把蝴蝶从其当前位置过渡到着陆位置。

另一个时间轴动画系统的作用则是驱动应用到蝴蝶翅膀的材质的参数,使其形成电光的波纹效果。

进行实验时可在树附近创建一个静态几何体,然后观察蝴蝶的行为。只要网格体处于蝴蝶的飞行路线中并拥有一个碰撞表面,那么AI系统便会将其检测为一个可着陆表面,蝴蝶将尝试在其上方着陆。

landingOnPyramid.png

蓝图设置

此图表的组件列表、构造脚本和事件图表执行以下任务:

蓝图部分

作用

组件列表

组件列表 用以下方式组装蝴蝶(凹陷代表父项关系):

ButterflyComponentList.png

身体和翅膀组件为静态网格体,而尾巴组件则是粒子系统。

构造脚本

构造脚本执行以下任务:

  • 指定吸引子对象的初始位置。

  • 创建和指定翅膀静态网格体的一个材质实例动态(MID)

  • 从公开的 细节(Details) 面板属性中收集材质设置数据,并将其应用到材质。

事件图表

事件图表执行以下任务: 游戏开始时——

  • 设置并开始翅膀材质的动画。

  • 每帧(tick)均会向前移动蝴蝶。

  • 更新蝴蝶的旋转,柔和地将其向一个目标旋转。

  • 执行一次碰撞检查,确认是否应开始着陆序列。

  • 为翅膀和身体设置动画。

  • 着陆后休息一段时间。

  • 休息后重新飞回着陆序列之前的上个位置。

  • 选取一个新目标并再次开始。

可编辑变量

系统中的公开变量控制Attractor Point的中心位置,以及应用到翅膀的材质的参数。

Properties_Butterfly.png

属性

作用

吸引子位置(Attractor Location)

此变量允许用户自定义AI导航的中心点。蝴蝶将周期性地飞回此点。变量也已启用其3D控件,使矢量通过视口内控件进行设置,在选中蓝图时可见。

最大飞行范围(Max Flight Range)

这是蝴蝶可飞离吸引子位置点的最大半径(以虚幻单位计)。

翅膀颜色(Wing Color)

此属性允许使用者自定义蝴蝶翅膀的颜色。因为蓝图的每个实例均接收其自身的材质实例动态(MID),关卡中可以存在多个蝴蝶,每个皆拥有其自身独有的颜色。