Unity简单有限状态机,SimpleFSM,独立游戏开发常用

本文介绍了SimpleFSM,一个用于管理2D或3D游戏中敌人行为的简单状态机,支持Idle、Patrol、Chase和Dead四种状态,代码结构清晰,易于扩展和维护。
摘要由CSDN通过智能技术生成

SimpleFSM是一个简单的敌人有限状态机(FSM)实现,用于管理敌人的行为。
SimpleFSM适用于开发2D或3D游戏中的敌人AI系统,特别是那些需要基本状态管理的情况。它可以作为一个简单的起点,用于创建更复杂的敌人行为模式。
这里定义了四种状态:Idle(闲置)、Patrol(巡逻)、Chase(追击)、Dead(死亡),并根据当前状态执行相应的行为。

using System.Collections;
using System.Net.NetworkInformation;
using UnityEngine;

public class EnemySimpleFSM : MonoBehaviour
{
    //规范四种状态,闲置,巡逻,追击,死亡
    public enum State { Idle, Patrol, Chase, Dead }

    [Header("参数")]
    public int health;  //仅供参考,非必要
    public State currentState;  //当前执行状态

    private void Awake()
    {
        //仅供参考,唤醒实例化变量
    }

    private void Start()
    {
        // 初始化状态,此处为初始化闲置状态
        currentState = State.Idle;
    }

    private void Update()
    {
        //检测敌人状态变化,非必要
        //CheckState();
        //注册并轮询状态,初始为闲置Idle状态
        currentState = currentState switch
        {
            State.Idle => UpdateIdleState(),
            State.Patrol => UpdatePatrolState(),
            State.Chase => UpdateChaseState(),
            State.Dead => UpdateDeadState(),
            _ => currentState
        };
    }
    
    private void ChangeState(State nextState)  //切换状态函数
    {
        currentState = nextState;
    }
    
    private void CheckState()
    {
        //检查状态变化,例如接触地面等发生变化时调用,非必要
        Debug.Log("Check State");
    }

    private State UpdateIdleState()  //Idle状态
    {
        Debug.Log("Idle State");
        //仅供参考,从闲置状态转入巡逻状态的代码逻辑
        //ChangeState(State.Patrol);
        return State.Idle;  //无变化,则维持闲置状态
    }

    private State UpdatePatrolState()  //巡逻状态
    {
        Debug.Log("Patrol State");
        return State.Patrol; //维持巡逻状态
    }

    private State UpdateChaseState()  //追击状态
    {
        Debug.Log("Chase State");
        return State.Chase;
    }

    private State UpdateDeadState()  //死亡状态
    {
        Debug.Log("Dead State");
        return State.Dead;
    }
}

优势:代码结构清晰,便于理解和修改;用枚举来表示状态,可以方便地添加新的状态或调整现有状态之间的转换逻辑;每个状态内都有对应的更新函数,方便添加状态特定的行为逻辑;单个文件解决敌人AI问题;独立游戏开发常用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值