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