30 lines
1.3 KiB
C#
30 lines
1.3 KiB
C#
namespace Invector.vCharacterController.AI.FSMBehaviour
|
|
{
|
|
#if UNITY_EDITOR
|
|
[vFSMHelpbox("Go to the last damage sender position", UnityEditor.MessageType.Info)]
|
|
#endif
|
|
public class vGoToDamageSender : vStateAction
|
|
{
|
|
public override string categoryName
|
|
{
|
|
get { return "Movement/"; }
|
|
}
|
|
public override string defaultName
|
|
{
|
|
get { return "Go To Damage Sender"; }
|
|
}
|
|
|
|
public bool goInStrafe = false;
|
|
public vAIMovementSpeed speed = vAIMovementSpeed.Walking;
|
|
|
|
public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate)
|
|
{
|
|
if (fsmBehaviour.aiController == null || fsmBehaviour.aiController.receivedDamage.lastSender==null) return;
|
|
if (executionType == vFSMComponentExecutionType.OnStateEnter) fsmBehaviour.aiController.ForceUpdatePath(2f);
|
|
|
|
if (goInStrafe)
|
|
fsmBehaviour.aiController.StrafeMoveTo(fsmBehaviour.aiController.receivedDamage.lastSender.position, fsmBehaviour.aiController.receivedDamage.lastSender.position - fsmBehaviour.transform.position,speed);
|
|
else fsmBehaviour.aiController.MoveTo(fsmBehaviour.aiController.receivedDamage.lastSender.position,speed);
|
|
}
|
|
}
|
|
} |