利用蓝图实现物理击碎
基于UE4第一人称蓝图项目
第一步
- 找到Content/StarterContent/Props/SM_Rock
鼠标右击,选择Create Destructible Mesh
- 生成SM_Rock_DM
- 在SM_Rock_DM中点击Fracture Mesh,让Rock可以物理破碎
- 然后保存,关闭SM_Rock_DM
- 之后右击SM_Rock_DM,选择Asset Actions——-Create Blueprint Using this…
- 这个时候你将创建SM_Rock_DM的蓝图类,将它命名为BP_Rokc,并且放到FirstPersonBP/Blueprints目录下
- 双击你的BP_Rock,你会发现里面有一个Destructible组件,然后在Add Component中添加ProjectileMovement组件(弹射移动组件)
- 修改ProjectileMovement组件的一些参数值(速度和弹射距离)
- 保存并关掉BP_Rock
- 接下来做岩石的生成,以及射击破碎
第二步
- 为了让岩石可以随机产生,我们需要设置生成点TargetPoint,在场景地图上,拖拽一些TargetPoint作为岩石产生时候的位置
- 保存场景,接下来我们将要实现岩石的产生
- 打开FirstPersonCharacter蓝图类,我们设置当玩家按下F键时,产生岩石。
- 为了获取到关卡场景中的产生点,我们需要与关卡进行通信。这时可以通过Event Dispatchers(事件调度器)来实现。关卡Level监听事件调度器,当被调用时,会触发关卡中的时间,从而获得一个产生点
- 在FirstPersonCharacter中的EventDispatchers中添加事件调度器GetSpawnLocation
-当我们按下F键时,调用事件调度去,关卡将会去监听并响应此方法,然后获得生成点SpawnLocation。在生成点我们SpawnActor生成岩石 - 这个时候我们转向Level Blueprint中,根据场景中添加的TargetPoint,我们随机获得生成点
- 现在,我们实现了按下F随机生成岩石。接下来我们将实现射击岩石,让岩石破碎
第三步
- 我们Bind一个事件,但不是刚才的事件监听器,而是一个OnHit事件
- 最后为了让子弹射击岩石时破碎,我们需要给岩石加一个应用伤害(Apply Radius Damage)
- 为了让击碎的岩石消失,设置计时器
参考[1]: http://docs.unrealengine.com/latest/CHN/Engine/Blueprints/HowTo/BPHT_5/index.html