コード例 #1
0
 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;
     }
 }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
 public IState DoState(OrcStateMachine stateMachine)
 {
     if (!stateMachine.GetIsDieAnim())
     {
         DoDeathState(stateMachine);
     }
     return(this);
 }
コード例 #4
0
 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);
 }
コード例 #5
0
 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();
 }
コード例 #6
0
 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);
 }
コード例 #7
0
 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;
     }
 }
コード例 #8
0
 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);
     }
 }
コード例 #9
0
 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);
     }
 }
コード例 #10
0
 private void DoIdle(OrcStateMachine stateMachine)
 {
     stateMachine.StartCoroutine(stateMachine.IdleToPatrolWait(1.2f));
 }