本篇介绍坚果及樱桃的功能实现。
坚果需要分为三种状态,根据血量的多少进行动画的切换,以及具有一些植物共有的属性方法,根据植物基类进行继承。
protected override void HpUpdateEvent()
{
float state1 = (MaxHp / 3) * 2;
float state2 = MaxHp / 3;
if (Hp < state1 && Hp > state2)
{
// 状态1
animationName = "WallNut_State1";
}
else if (Hp< state2)
{
// 状态2
animationName = "WallNut_State2";
}
else
{
// 正常
animationName = "WallNut_Idel";
}
animator.Play(animationName);
}
樱桃功能为爆炸功能,会对附近僵尸进行一定量的伤害量攻击,首先需要进行爆炸的检测,如果可以爆炸调用爆炸方法,爆炸时进行音效的播放以及生成攻击特效并自身进行动画的转化造成自身死亡效果。
IEnumerator CheckBoom()
{
while (true)
{
yield return new WaitForSeconds(0.05f);
if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime>=1)
{
// 爆炸
Boom();
}
}
}
private void Boom()
{
AudioManager.Instance.PlayEFAudio(GameManager.Instance.GameConf.Boom);
List<ZombieBase> zombies = ZombieManager.Instance.GetZombies(transform.position+boomoffset, 2.5f);
if (zombies == null) return;
for (int i = 0; i < zombies.Count; i++)
{
zombies[i].BoomHurt(attackValue,zombies[i].name);
}
Boom boom = PoolManager.Instance.GetObj(GameManager.Instance.GameConf.BoomObj).GetComponent<Boom>();
boom.Init(transform.position);
Dead();
}