项目实训(九)

本篇介绍坚果及樱桃的功能实现。

坚果需要分为三种状态,根据血量的多少进行动画的切换,以及具有一些植物共有的属性方法,根据植物基类进行继承。

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();

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值