mergemilitary/Assets/Scripts/Game/Wars/Soldiers/SoldierStates/SoldierStateRun.cs

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);
}
}