2D小游戲——狀態機

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerStateController : MonoBehaviour {
    public enum PlayerState
    {
        /// <summary>
        /// 待機
        /// </summary>
        idle,
        /// <summary>
        /// 走
        /// </summary>
        walk,
        /// <summary>
        /// 跳
        /// </summary>
        jump,
        /// <summary>
        /// 受傷
        /// </summary>
        hurt,
    }
    public PlayerState m_state;
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        
        if (Input.GetAxis("Vertical") != 0)//跳躍的優先級高于行走
        {
            m_state = PlayerState.jump;
        }
        else if (Input.GetAxis("Horizontal") != 0)
        {
            m_state = PlayerState.walk;
        }
        else //沒有按鍵按下時轉為待機
        {
            m_state = PlayerState.idle;
        }
        
        switch (m_state)
        {
            case PlayerState.idle:
                {
                    /*
                     * 在沒有任何指令時,進入待機狀態,播放待機動畫
                     * 一般是人物的初始狀態
                     */
                }
                break;
            case PlayerState.walk:
                {
                    /*
                     * 水平方向的按鍵被按住時,進入行走狀態,播放行走動畫
                     * 這里控制人物左右移動速度以及方向
                     */
                }
                break;
            case PlayerState.jump:
                {
                    /*
                     * 垂直向上方向的按鍵被按住時,進入跳躍狀態,播放跳躍動畫
                     */
                }
                break;
            case PlayerState.hurt:
                {
                    /*
                     * 受傷時,進入受傷狀態,播放受傷動畫
                    */
                }
                break;
        }
    }

    /// <summary>
    /// 當人物遭到攻擊時,攻擊方通知人物受傷,人物自行進行受傷動作
    /// </summary>
    public void OnHurt()
    {
        /*
         * 被通知受傷后,進入受傷狀態,播放受傷動畫
         * 自己進行減血等動作
         * 一般在受傷動畫播完后進入其他狀態
         */
        m_state = PlayerState.hurt;
    }
}

交流群 962257105

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容