食人花的创建
食人花代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Chomper : PlantBase
{
public override float MaxHp
{
get
{
return 300;
}
}
protected override float attackCD => 7f;
protected override Vector2 offset => new Vector2(0.2f, 0.2f);
private bool canAttack;
protected override void OnInitForPlace()
{
canAttack = true;
InvokeRepeating("Attack", 0, 0.2f);
}
private void Attack()
{
if (canAttack == false) return;
ZombieBase zombie = ZombieManager.Instance.GetZombieByLineMinDistance((int)currGrid.Point.y, transform.position);
if (zombie == null) return;
if (zombie.CurrGrid.Point.x == 8 && Vector2.Distance(zombie.transform.position, zombie.CurrGrid.Position) > 1.5f) return;
if (zombie.transform.position.x < transform.position.x || zombie.transform.position.x - transform.position.x > 4.5f) return;
animator.Play("ChomperAttack");
AudioManager.Instance.PlayEFAudio(GameManager.Instance.GameConf.Eat);
StartCoroutine(CheckEat(zombie));
CDEnter();
canAttack = false;
}
private void CDEnter()
{
StartCoroutine(CalCD());
}
IEnumerator CalCD()
{
yield return new WaitForSeconds(attackCD);
animator.Play("Chomper");
canAttack = true;
}
IEnumerator CheckEat(ZombieBase zombie)
{
while (true)
{
yield return new WaitForSeconds(0.05f);
if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1)
{
zombie.Eat();
animator.Play("ChomperDigest");
}
}
}
}
僵尸新死法,被吃
public void Eat()
{
isSpecialDie = true;
State = ZombieState.Dead;
}