上一篇我们讲解了,蓝图中的函数功能。可以将蓝图中重复的代码,再次利用。演示了Smasher的效果。
这一篇中,我们讲解Smasher造成伤害之后,如何保存和计算角色的血量状态。
我们的设计思路是:smasher每次碰到角色是,造成50点伤害,角色血量100。
触碰到两次,角色Die。
首先我们打开角色蓝图:
然后我们新建一个变量:名称为:Health。类型为float型,然后用此保存角色血量。设置默认值为100。
然后我们,新建一个自定义事件:这个事件名称:TakeDamage,输入参数为DamageAmount。一看就是造成伤害的事件,参数为伤害值。然后拖动血量Health进入蓝图。两者做差。
又重新得到血量值。然后set血量值。此时新建一个Branch。用于判断血量是否小于0。
小于0
然后将Branch连接。此时如果血量小于0需要角色Die。如何Die呢。
我们需要新建一个事件:PlayerDeath。这个事件专门用来演示,当角色Die时的动作。
所以我们需要用到角色的蓝图mesh。拖动进入到蓝图中。
我们可以看到角色的Mesh细节:里面包含了物理仿真和碰撞预设。其中碰撞预设中包含了RagDoll。
当角色发生Die时,然后启动物理仿真setSimulate physics,然后设置碰撞。setCollisionPorfileName。
设置profileName为RagDoll。
最后Disable any input from the user after they die。
此时我们就可以在TakeDamage事件后面添加上角色Die事件。
完成这两个事件的配置后,我们需要回到Smasher蓝图中,因为:造成伤害,需要Smasher来执行。
在Smasher中,触碰到Box造成伤害,当好Box有个On Component Begin Overlap事件。
点击添加+
然后,我们需要添加到底哪个Actor触碰了Box。
cast to ThirdPersonCharacter。
然后我们就可以调用这个Character的造成伤害的方法了。
给方法传递一个参数。Damage。
然后保存。
回到角色蓝图中,然后:
print一下,HIT!。然后再打印一下角色血量值。
添加两个Print。然后变更流程。
同时,在Smasher蓝图中,将Damage变量,设置默认值为50。
需要编译,才可以设置默认值。
编译角色时,报错:
我们将mesh和目标连接。
注意:
勾选这两个选项,否则无效果。