// Update is called once per frame void Update() { //进出视野范围内的逻辑处理 if (EnemyManager._Instance.enemyList.Count > 0) { foreach (var i in EnemyManager._Instance.enemyList) { if (Vector2.Distance(this.transform.position, i.transform.position) <= DetectRadius) { if (!InSightList.Contains(i)) { InSightList.Add(i); } } else { if (InSightList.Contains(i)) { InSightList.Remove(i); } } } } if (InSightList.Count > 0) { Enemy enemy = InSightList[0]; if (enemy == null) { InSightList.Remove(enemy); return; } if (attackTimeCount >= 1f / attackSpeed) { //攻击敌人 enemy.Hurt(attack); attackTimeCount = 0; this.aniState = SoldierAnimationState.Pistol; ChangeDirection(enemy.transform.position); } else { attackTimeCount += Time.deltaTime; } } else { //执行警戒 this.aniState = SoldierAnimationState.Normal; } if (preAniState != aniState) { if (OnStateChanged != null) { OnStateChanged(); } } preAniState = aniState; }
public void SetSoldierAniState(SoldierAnimationState state) { switch (state) { case SoldierAnimationState.Normal: this.AnimIndex = 0; break; case SoldierAnimationState.Pistol: this.AnimIndex = 1; break; case SoldierAnimationState.ShotGunOff: this.AnimIndex = 2; break; case SoldierAnimationState.ShotGunOn: this.AnimIndex = 3; break; default: break; } }