private void DoPursuit(OrcStateMachine stateMachine) { stateMachine.LookPlayer(); stateMachine.enemy.stats.Spd = 4f; stateMachine.navAgent.speed = stateMachine.enemy.stats.Spd; stateMachine.navAgent.stoppingDistance = 3f; stateMachine.navAgent.isStopped = false; if (stateMachine.navAgent.destination != GameManager.Instance.player.transform.position) { stateMachine.navAgent.SetDestination(GameManager.Instance.player.transform.position); stateMachine.SetPatrolAnim(false); stateMachine.SetPursuitAnim(true); } if (Vector3.Distance(stateMachine.navAgent.transform.position, stateMachine.navAgent.destination) <= stateMachine.navAgent.stoppingDistance) { stateMachine.enemy.conditions.isAttackRange = true; stateMachine.enemy.conditions.isChasing = false; } if (Vector3.Distance(stateMachine.navAgent.transform.position, stateMachine.navAgent.destination) >= stateMachine.enemy.stats.PursuitRange) { stateMachine.enemy.conditions.isPatrol = true; stateMachine.enemy.conditions.isChasing = false; stateMachine.enemy.conditions.isPursuitRange = false; } if (!stateMachine.isSpinCorrRunning) { stateMachine.enemy.conditions.canSpinAttack = true; } }
public IState DoState(OrcStateMachine stateMachine) { DoIdle(stateMachine); if (stateMachine.enemy.conditions.isAttackRange) { return(stateMachine.attackState); } else if (stateMachine.enemy.conditions.isPursuitRange) { return(stateMachine.pursuitState); } else if (stateMachine.enemy.conditions.isPatrol) { return(stateMachine.patrolState); } else if (stateMachine.enemy.conditions.isHitten) { return(stateMachine.getHitState); } else if (stateMachine.enemy.conditions.isDead) { return(stateMachine.deathState); } else { return(this); } }
public IState DoState(OrcStateMachine stateMachine) { if (!stateMachine.GetIsDieAnim()) { DoDeathState(stateMachine); } return(this); }
private void DoPatrol(OrcStateMachine stateMachine) { stateMachine.navAgent.stoppingDistance = 1.5f; stateMachine.enemy.stats.Spd = 2f; stateMachine.navAgent.speed = stateMachine.enemy.stats.Spd; stateMachine.SetPursuitAnim(false); stateMachine.SetPatrolAnim(true); stateMachine.navAgent.SetDestination(stateMachine.patrolTarget.position); }
private void DoSpin(OrcStateMachine stateMachine) { stateMachine.spinCollider.SetActive(true); stateMachine.enemy.conditions.canSpinAttack = false; stateMachine.navAgent.speed = 20f; stateMachine.navAgent.acceleration = 15f; stateMachine.enemy.conditions.isPatrol = false; stateMachine.enemy.conditions.isChasing = false; stateMachine.navAgent.SetDestination(GameManager.Instance.player.transform.position); GameManager.Instance.soundManager.Play("OrcSpin"); stateMachine.SetTriggerSpinAnim(); }
public IState DoState(OrcStateMachine stateMachine) { DoSpin(stateMachine); if (stateMachine.enemy.conditions.isChasing || stateMachine.enemy.conditions.isPursuitRange) { return(stateMachine.pursuitState); } else if (stateMachine.enemy.conditions.isPatrol) { return(stateMachine.patrolState); } return(stateMachine.waitState); }
private void DoAttack(OrcStateMachine stateMachine) { stateMachine.SetPursuitAnim(false); if (!stateMachine.enemy.conditions.isAttacking) { stateMachine.transform.LookAt(GameManager.Instance.player.transform.position); GameManager.Instance.soundManager.Play("OrcAttack"); stateMachine.SetTriggerAttackAnim(); stateMachine.enemy.conditions.isAttacking = true; } if (Vector3.Distance(stateMachine.navAgent.transform.position, GameManager.Instance.player.transform.position) > stateMachine.enemy.stats.AttackRange) { stateMachine.enemy.conditions.isAttackRange = false; stateMachine.enemy.conditions.isChasing = true; stateMachine.enemy.conditions.isAttacking = false; } }
public IState DoState(OrcStateMachine stateMachine) { DoGetHit(stateMachine); if (stateMachine.enemy.conditions.isWait) { return(stateMachine.waitState); } else if (stateMachine.enemy.conditions.isAttackRange) { return(stateMachine.attackState); } else if (stateMachine.enemy.conditions.isDead) { return(stateMachine.deathState); } else { return(stateMachine.pursuitState); } }
public IState DoState(OrcStateMachine stateMachine) { DoPatrol(stateMachine); if (stateMachine.enemy.conditions.canSpinAttack) { return(stateMachine.spinState); } else if (stateMachine.enemy.conditions.isChasing) { return(stateMachine.pursuitState); } else if (stateMachine.enemy.conditions.isHitten) { return(stateMachine.getHitState); } else if (stateMachine.enemy.conditions.isDead) { return(stateMachine.deathState); } else { return(stateMachine.patrolState); } }
private void DoIdle(OrcStateMachine stateMachine) { stateMachine.StartCoroutine(stateMachine.IdleToPatrolWait(1.2f)); }