Files
Zombie/Assets/_Zombie/Scripts/Behaviors/Actions.cs
2025-08-27 13:37:20 +08:00

99 lines
2.8 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 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 EnemyMoveForward : Action
{
public SharedFloat dis;
public override TaskStatus OnUpdate()
{
Enemy enemy = transform.GetComponent<Enemy>();
if (enemy == null) return TaskStatus.Failure;
Vector3 targetPos = transform.position + transform.forward * dis.Value;
enemy.ai.isStopped = false;
enemy.ai.destination = targetPos;
return TaskStatus.Success;
}
}
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;
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;
}
}
}