///<summary> /// Changing enemyacter state by detecting what kind of layer it touches ///</summary> protected virtual void ChangeState(EnemyState state) { if (enemyState == state || IsDead()) { return; } if (IsAttacking()) { OnAttackEnd.Invoke(); } if (IsPatrolling()) { OnPatrolEnd.Invoke(); } if (IsChasing()) { OnChaseEnd.Invoke(); } if (IsIdling()) { OnIdleEnd.Invoke(); } // set new state var prevState = enemyState; enemyState = state; if (!IsAttacking()) { m_General.canFlip = true; } if (IsAttacking()) { OnAttack.Invoke(); } if (IsPatrolling()) { OnPatrol.Invoke(); } if (IsChasing()) { OnChase.Invoke(); } if (IsIdling()) { OnIdle.Invoke(); } OnMotorStateChanged.Invoke(prevState, enemyState); }
public void StopPatrol() { if (!isEnabled) { Debug.LogWarning(name + "'s patrol behaviour is not setupped!"); return; } StopAllCoroutines(); data.enemyMovementBehaviour.StopAllCoroutines(); data.enemyMovementBehaviour.SetMoveDirection(Vector2.zero); wasInterrupted = true; OnPatrolEnd.Invoke(); }