UE4学习笔记 FPS游戏制作14 发射抛物线子弹
文章目录
- 首先制作一个子弹
- 重写Launcher的发射方法
- 敌人受伤
- 设定时间间隔
- 方法1 动画事件
- 方法2 计时器
首先制作一个子弹
新建一个蓝图,父类为Actor,命名为Bullet
为其增加一个SphereCollider和静态网格体组件,静态网格体设为Sphere的子物体
调整ShpereCollider的碰撞尺寸,注意他的缩放尺寸还是1
碰撞预设里选择BlockAll
为静态网格体选择一个网格,我这里直接用了球,然后调整大小和位置,来符合ShereCollider的大小
然后为子弹添加一个ProjectileMovement组件,这可以让子弹呈抛物线移动
选择ProjectileMovement,调整一下速度
勾选可以反弹,否则球体第一次碰到表面就不会移动了
选择Bullet的self,输入一个存活时间,一定时间后自动销毁
重写Launcher的发射方法
这样就可以发射小球了
注意:这里的Spawn Transform Scale是111,那么生成后的物体的根节点就会是 1 1 1,即使我们在蓝图里修改了SphereCollision的尺寸,也会被设置为111,这就是为什么没有直接用网格的碰撞模拟(这里是老师说的,但是我认为可以不用SphereCollision,直接用网格的碰撞,直接把Spawn Transform Scale改成0.1 0.1 0.1就可以)
敌人受伤
在子弹的事件图表里,添加Hit事件节点
设定时间间隔
方法1 动画事件
添加一个变量canFire,开始射击时设置为禁止射击,在动画上添加事件,结束时将状态设置为可以射击,在开枪前判断canFire的状态
方法2 计时器
在Launghter上添加两个变量
ShootAnimTimeLength是射击动画的时长,默认值设置为0.4,0.4是射击动画的时长
然后修改Launghter的开火方法
射击前先判断一下现在的时间-上次开火的时间,是否大于开火的时间间隔
播放射击动画蒙太奇时,记录一下当前的时间(还是开火方法)