效果

步骤
1. 添加初学者内容包(需要用到其中的音效和粒子效果)

2. 接下来制作坦克的炮弹
首先新建一个Actor蓝图类,作为所有发射物体(炮弹、机枪子弹等)的父类,这里命名为“TotalCategoryOfProjectile”

打开“TotalCategoryOfProjectile”,添加一个发射物移动组件

然后设置一下抛射物的初始速度和发射物重力范围
添加一个球形碰撞组件

将球形碰撞组件作为根组件

3. 创建子蓝图类
命名为“TankShell”,表示坦克炮弹

打开“TankShell”,由于美M1主战坦克的火炮口径为120mm,因此这里球形碰撞组件的半径设置为6cm

添加静态网格体组件

赋予一个模型

调整静态网格体的缩放,使得球形碰撞组件能够差不多包裹住子弹模型

设置静态网格体的碰撞预设为“NoCollision”

4. 打开“TotalCategoryOfProjectile”(发射物总类),设置球形碰撞组件的碰撞预设为“Custom”,碰撞响应为阻挡。

这样它的子类中继承的球形碰撞组件的碰撞预设也为“Custom”

5. 打开骨骼“SKEL_West_Tank_M1A1Abrams”

显示所有插槽

可以看到炮口处有一个名为“gun_1_jntSocket”的插槽,因此我们可以使用这个插槽来生成炮弹和炮火粒子效果

5. 打开“BP_West_Tank_M1A1Abrams”

添加如下节点,实现按下鼠标左键生成“TankShell”(坦克炮弹类)

接下来添加开炮时的音效
6. 添加一个音效衰减

命名为“AttenuationOfFiringSound”,这里先保持“AttenuationOfFiringSound”的默认设置

7. 打开“BP_West_Tank_M1A1Abrams”

在事件图表中添加如下节点来播放坦克开炮时的音效

设置音效衰减

接下来希望在开炮时能够展示炮口火焰。
选中“GunFire”,然后父项套接字设置为“gun_1_jntSocket”

同样的,选中“ShockWave”,父项套接字设置为“gun_1_jntSocket”
将这两个粒子系统组件位置归0

在开炮时激活这两个粒子系统组件,这样开炮时就能看到开炮时产生的粒子效果

由于坦克开一炮后会存在一段装填时间,因此使用“Do Once”和“延迟”节点来模拟这个装填状态,即只有延迟时间结束后才会重置“Do Once”节点:

8. 接下来添加炮弹击中目标时执行的逻辑
打开“TankShell”(坦克炮弹蓝图类)
选中“Sphere(继承)”,添加一个组件命中时的事件

添加如下节点

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



















