149 lines
4.3 KiB
C#
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;
|
|
}
|
|
}
|
|
} |