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