效果
步骤
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(继承)”,添加一个组件命中时的事件
添加如下节点
最终效果如文章开头所示。