IEnumerator AutoAttack(Transform enemy) //自动走向敌人并攻击 { float Distance = Vector3.Distance(transform.position, enemy.position); //玩家当前位置和目标位置的距离 //print("Distance:"+Distance); while (Distance > attackDistance) { Distance = Vector3.Distance(transform.position, enemy.position); Vector3 moveD = enemy.position - transform.position; moveD.y = 0;//不考虑垂直方向的位移 Move3d(moveD); yield return(null); } if (Distance <= attackDistance) { StopMove(); EnemyMotion em = enemy.GetComponent <EnemyMotion>(); if (autoAttack)//如果开启了自动攻击 { while (em.IsLive()) { Attack(enemy); yield return(null); } yield break; } else { Attack(enemy); yield break; } } }
void Awake() { enemyMotion = GetComponent<EnemyMotion>(); enemySprite = enemyMotion.GetComponent<SpriteRenderer>(); enemyTransform = enemyMotion.spriteTransform; enemyAudio = GetComponent<AudioSource>(); }
void Awake() { damageTaker = GetComponent<DamageTaker>(); enemyMotion = GetComponent<EnemyMotion>(); enemySprite = enemyMotion.GetComponent<SpriteRenderer>(); enemyTransform = enemyMotion.spriteTransform; }
//enumクラスの中で値を決める public void changeState(EnemyMotion motion) { currentMotion = motion; }