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
网友评论