美文网首页
2D小游戏——状态机

2D小游戏——状态机

作者: GZoO | 来源:发表于2019-02-26 17:17 被阅读0次
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

相关文章

网友评论

      本文标题:2D小游戏——状态机

      本文链接:https://www.haomeiwen.com/subject/fszayqtx.html