美文网首页
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