目录
效果
步骤
一、让子弹拥有不同伤害
二、敌人拥有不同血量
三、修改“BP_TowerBase”逻辑
四、发射的子弹对敌人造成伤害
效果
步骤
一、让子弹拥有不同伤害
为了让每一种子弹拥有不同的伤害值,打开“TotalBulletsCategory”(所有子弹的父类),新建一个浮点型变量,命名为“DamageValue”,表示子弹的伤害值,默认值设为10
子弹碰撞到敌人时,应用这个伤害值
打开“TowerBaseBullet_Child”,修改父类中的“DamageValue”,这样就可以让不同的子弹拥有不一样的伤害值
二、敌人拥有不同血量
打开“TotalEnemyCategory”,新建一个浮点型变量,命名为“HealthyValue”,用于表示敌人的当前的生命值,设置默认值为100
同样的我们可以在子类“Enemy1”中去修改“HealthyValue”的大小,让每一个敌人拥有不同的生命值。
三、修改“BP_TowerBase”逻辑
事件开始运行后,每隔1s执行一次“DetectEnemise”事件
“DetectEnemise”事件如下
当检测到了敌人后就停止检测,停止执行定时器事件,如果没有检测到,就重新检测敌人。
当变量“ChoosedEnemy”无效时,需要重新开始检测
四、发射的子弹对敌人造成伤害
在“TotalEnemyCategory”中添加如下节点,当敌人的生命值归0时设置模拟物理来模拟敌人倒下的效果,然后延迟2s销毁敌人Actor
这里需要将Mesh组件中的碰撞预设设置为自定义,然后忽略Pawn的碰撞,否则敌人会被击飞。
此时运行游戏会发现当敌人死亡后炮塔还在继续向这个死亡的敌人发射子弹,为了避免这个现象,我们需要在“TotalEnemyCategory”中添加一个布尔变量来表示敌人是否已经死亡
当敌人生命值归0时,设置“isDead”为真
打开“BP_TowerBase”,添加对敌人死亡的判断,没有死亡就继续之前的逻辑,死亡就重新开始检测
此时运行游戏如文章开头所示。