Files
DefendNJ/Assets/_DefendNJ/Scripts/Behaviors/Actions.cs

149 lines
4.3 KiB
C#

using BehaviorDesigner.Runtime;
using BehaviorDesigner.Runtime.Tasks;
using UnityEngine;
public class Actions
{
public class SetEnemyState : Action
{
public SharedInt state;
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
enemy.state = (EnemyState)state.Value;
return TaskStatus.Success;
}
}
public class SetPlayerAiState : Action
{
public SharedInt state;
public override TaskStatus OnUpdate()
{
PlayerAI playerAi = transform.GetComponent<PlayerAI>();
if (playerAi == null) return TaskStatus.Failure;
playerAi.state = (PlayerAIState)state.Value;
return TaskStatus.Success;
}
}
public class SetEnemyDestination : Action
{
public SharedVector3 targetPos;
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
enemy.ai.isStopped = false;
enemy.ai.destination = targetPos.Value;
return TaskStatus.Success;
}
}
public class SetEnemyDestination2 : Action
{
public SharedGameObject target;
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
enemy.ai.isStopped = false;
enemy.ai.destination = target.Value.transform.position;
return TaskStatus.Success;
}
}
public class PlayerAIMoveForward : Action
{
public SharedGameObject TargetObj;
public override TaskStatus OnUpdate()
{
PlayerAI playerAi = transform.GetComponent<PlayerAI>();
if (playerAi == null) return TaskStatus.Failure;
playerAi.ai.isStopped = false;
playerAi.ai.destination = TargetObj.Value.transform.position;
if (playerAi.ai.destination == TargetObj.Value.transform.position)
{
return TaskStatus.Success;
}
return TaskStatus.Running;
}
}
public class EnemyMoveToward : Action
{
public SharedFloat dis;
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
Vector3 targetPos = transform.position + new Vector3(0, 0, -1) * dis.Value;
enemy.ai.isStopped = false;
enemy.ai.destination = targetPos;
return TaskStatus.Success;
}
}
public class EnemyStop : Action
{
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
enemy.ai.isStopped = true;
//Debug.Log("敌人停止");
return TaskStatus.Success;
}
}
public class EnemyAttack : Action
{
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
enemy.DoAttack();
return TaskStatus.Success;
}
}
public class EnemyStopAttack : Action
{
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
enemy.StopAttack();
return TaskStatus.Success;
}
}
public class PlayerAIAttack : Action
{
public override TaskStatus OnUpdate()
{
PlayerAI playerAi = transform.GetComponent<PlayerAI>();
if (playerAi == null) return TaskStatus.Failure;
playerAi.StopAttack();
return TaskStatus.Success;
}
}
public class PlayerAIStopAttack: Action
{
public override TaskStatus OnUpdate()
{
PlayerAI playerAi = transform.GetComponent<PlayerAI>();
if (playerAi == null) return TaskStatus.Failure;
playerAi.StopAttack();
return TaskStatus.Success;
}
}
}