上一篇:
【UE4】从零开始制作战斗机(上:准备模型、定义函数和变量)_Zhichao_97的博客-CSDN博客
效果
步骤
1. 打开“BP_Jet”,在事件图表中添加如下节点
由于我们希望飞机一开始就是在空中飞行,所以一开始就给飞机一个推力,并且设置飞机当前速度
接下来开始编辑“PrintVariables”函数,其中打印字符串节点的“Duration”参数设置为0
打开“UpdatePosition”函数,添加如下节点。判断当前的推进速度是否小于当前飞机的实际飞行速度,如果是就表示飞机正在减速,如果不是就设置飞机当前的飞机速度为推进速度。
新添加一个局部变量,命名为“NewPosition”
然后每一帧去更新“NewPosition”变量
接下来开始计算重力,让“CurrentSpeed”在0~“MinThrustToNotFall”(4000)范围内做一个映射,相应的在“Gravity”(981)~0这个范围内输出重力的值。也就是说当“CurrentSpeed”为0时,“AppliedGravity”的值就为981,当“CurrentSpeed”为4000时,“AppliedGravity”的值就为0。
再根据重力更新飞机每一帧的位置
现在运行游戏飞机会以恒定的速度(4000)沿直线飞行,这是因为我们还没有通过键盘事件来改为飞机的方向和速度。
2. 打开“项目设置”,添加如下轴映射
3. 在“BP_Jet”的事件图表中,添加如下节点。当按下W/S键后,将“AxisValue”和delta second、“ThrustMultiplie”相乘就可以得到加速或减速的值,再加上之前的推进速度,就可以得到现在的推进速度。
此时我们就可以通过W/S键来控制飞机的加速/减速。
继续在事件图表中添加如下节点
打开“UpdateYaw”函数,添加如下节点。其中“TargetYaw”表示飞机最终会达到的旋转值,但是并不意味着飞机会立马达到这个值,需要通过插值节点逐渐达到。
此时运行游戏我们就可以通过A/D键来控制飞机向左/右飞行
为了让飞机的方向舵跟着旋转,首先添加一个宏,命名为“NegateFloat”
然后设置方向舵的相对旋转
接下来,继续编辑飞机升降的逻辑
基本和“UpdateYaw”函数内容一致
最终效果如文章开头所示。