84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections; | |||
|  | using System.Collections.Generic; | |||
|  | using UnityEngine; | |||
|  | 
 | |||
|  | public class SoldierStateRun : BaseState<SoldierUnit> | |||
|  | { | |||
|  |     public override void EnterState(Type pLastState) | |||
|  |     { | |||
|  |         base.EnterState(pLastState); | |||
|  | 
 | |||
|  |         if (mMaster.AtkType == AttackType.Near) | |||
|  |         { | |||
|  |             if (mMaster.HasAttackableTarget) | |||
|  |             { | |||
|  |                 ChangeState(typeof(SoldierStateAttack)); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 mMaster.SetACTrigger(SoldierACTrigger.TriggerRun); | |||
|  |             } | |||
|  |         } | |||
|  |         else if (mMaster.AtkType == AttackType.Far) | |||
|  |         { | |||
|  |             mMaster.ShootTarget = mMaster.AgainstGroup.GetNearestTarget(mMaster.transform.position, mMaster.AtkDistance); | |||
|  |             if (mMaster.ShootTarget != null && !mMaster.ShootTarget.IsDead) | |||
|  |             { | |||
|  |                 ChangeState(typeof(SoldierStateShoot)); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 mMaster.SetACTrigger(SoldierACTrigger.TriggerRun); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     public override void ExecuteState(float pDeltaTime) | |||
|  |     { | |||
|  |         base.ExecuteState(pDeltaTime); | |||
|  | 
 | |||
|  |         if (mMaster.AtkType == AttackType.Near) | |||
|  |         { | |||
|  |             if (mMaster.HasAttackableTarget) | |||
|  |             { | |||
|  |                 ChangeState(typeof(SoldierStateAttack)); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 if (mMaster.MoveTarget != null && !mMaster.MoveTarget.IsDead) | |||
|  |                 { | |||
|  |                     mMaster.MoveToTarget(pDeltaTime); | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     ChangeState(typeof(SoldierStateIdle)); | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |         else if (mMaster.AtkType == AttackType.Far) | |||
|  |         { | |||
|  |             mMaster.ShootTarget = mMaster.AgainstGroup.GetNearestTarget(mMaster.transform.position, mMaster.AtkDistance); | |||
|  |             if (mMaster.ShootTarget != null && !mMaster.ShootTarget.IsDead) | |||
|  |             { | |||
|  |                 ChangeState(typeof(SoldierStateShoot)); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 if (mMaster.MoveTarget != null && !mMaster.MoveTarget.IsDead) | |||
|  |                 { | |||
|  |                     mMaster.MoveToTarget(pDeltaTime); | |||
|  |                 } | |||
|  |                 else | |||
|  |                 { | |||
|  |                     ChangeState(typeof(SoldierStateIdle)); | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     public override void ExitState(Type pNextState) | |||
|  |     { | |||
|  |         base.ExitState(pNextState); | |||
|  |     } | |||
|  | } |