【UE4】从零开始制作战斗机(中:飞机操控逻辑)

上一篇:

【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”函数内容一致

最终效果如文章开头所示。 

猜你喜欢

转载自blog.csdn.net/ChaoChao66666/article/details/130799829