public void CheckDistance() { if (!target.GetComponent <Player>().isDead) { if (Vector3.Distance(target.position, transform.position) <= chaseRadius) { if (Vector3.Distance(target.position, transform.position) <= attackRadius) { //Attack state ChangeAnim(target.position - transform.position); stateMachine.ChangeState(Monk_AttackState.Instance()); } else if (!isCasting) { //Chase state stateMachine.ChangeState(Monk_WalkingState.Instance()); } } else { //Idle State stateMachine.ChangeState(Monk_IdleState.Instance()); } } else { //If player is dead ChangeAnim(Vector2.down); StopCoroutine("CastCo"); } }
public override void ExecuteState(Monk owner) { if (!owner.isCasting) { owner.StartCasting(); alreadyAttacked = true; if (alreadyAttacked) { alreadyAttacked = false; owner.GetFSM().ChangeState(Monk_IdleState.Instance()); } } }
private void Start() { myRigidbody = GetComponent <Rigidbody2D>(); anim = GetComponent <Animator>(); anim.SetFloat("moveX", 0f); anim.SetFloat("moveY", -1f); isCasting = false; target = GameObject.FindWithTag("Player").transform; stateMachine = new StateMachine <Monk>(this); stateMachine.currentState = Monk_IdleState.Instance(); }