UE4学习笔记2----蓝图实现物体来回移动
要使物体来回移动的思路是:
(1)先找到物体移动的方向
(2)计算物体每帧移动的距离(速度自定义)
(3)还需要保存物体当前的位置、旋转、缩放等属性(确保物体来回移动过程中别的shux属性不会改变)
(4)改变物体移动方向实现来回移动
(5)最后通过延迟改变方向的时间使物体能够移动一段距离。
具体实现如下:
1、设置物体移动方向
(1)创建变量,首先在左侧“我的蓝图”面板里点击“变量”,创建两个变量值,分别命名为“Speed”和“Direction”如下图:
图1.1 创建变量图
(2)设置变量,选中左侧的“Speed”变量,然后在右边的“细节”面板设置变量类型为浮点型,并点击勾选“可编辑实例”,编译后设置默认值改变为200,操作结果如下:
图1.2 Speed变量设置界面
同样方法设置Direction变量,类型为“Vector”型,点击勾选“可编辑实例”,编译后设置默认值(此处的默认值是物体移动时的方向,可根据需要设置)。
图1.3 Direction变量设置界面
(3)归一化方向向量
归一化:将向量的长度转换为一个单位长度,可与其余部分的
将“我的蓝图”中的变量“Direction”拖拽到网格中选择“获取”,再右键网格创建一个“Normalize”节点,作如下连接:
图1.4 归一化向量
2、设置物体移动速度
点击拖拽左侧“我的蓝图”中的Speed变量到网格中选择“获取”,然后右键网格搜索并创建“Get World Delta Seconds”节点(可使每一帧物体移动速度一致),再右键网格搜索并创建“float*float节点”如图所示:
图2.1 *号节点
然后将三个节点如下图相连:
图2.2 速度节点组
3、记录物体位置、旋转、缩放信息
在网格右键搜索并创建“GetWorldTransform(Static Mesh Component)”节点,再到网格右键搜索并创建“Break Transform”作如下连接:
图3.1 保存信息节点组
4、将方向数据、速率数据、保存的信息数据放入到一个暂存节点中
在网格右键搜索并创建“Make Transform”节点(暂存最新的位置、旋转、缩放信息)、“Vector*float"节点(将方向与速率相乘得到位移量)、“Vector+Vector”节点(将物体当前位置加上位移量得出下一帧物体的位置),作如下连接:
图4.1 物体新状态信息节点组
5、更新位置并延迟后调转方向
在网格右键搜索并创建“事件Tick”(使每帧刷新)、“SetActorTransform”(接收物体新状态并刷新),作如下连接:
图5.1 更新物体状态
然后再网格右键搜索并创建“Delay”(延时节点,设置物体朝一个方向移动的时间)、“FlipFlop”(可实现在两个节点之间转换,使方向重复地改变),再将左侧变量“Direction”拖拽到网格中并点击“设置”两次(设置物体来回移动的位置量),作如下连接:
图5.2 改变物体方向
至此物体来回移动就完成了!