这个unity脚本挂角色上后动角色动不了。跟着教程走的,不知道怎么回事
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum PlayerState
{
idle,
run,
die,
attack,
attack2
}
public class PlayerControl : MonoBehaviour
{
//主角状态
private PlayerState state = PlayerState.idle;
//刚体组件
private Rigidbody rBody;
//动画器组件
private Animator animator;
//最大血量
public int MaxHp = 100;
//血量
public int Hp = 100;
// Start is called before the first frame update
void Start()
{
//获取刚体组件
rBody = GetComponent<Rigidbody>();
//获取动画器组件
animator = GetComponent<Animator>();
//隐藏鼠标指针
Cursor.lockState = CursorLockMode.Locked;
}
// Update is called once per frame
void Update()
{
//按下Alt
if (Input.GetKeyDown(KeyCode.LeftAlt))
{
//显示鼠标指针
Cursor.lockState = Cursor.lockState == CursorLockMode.Locked ? CursorLockMode.None : CursorLockMode.Locked;
}
//如果鼠标指针为呼出状态不做任何事
if(Cursor.lockState==CursorLockMode.None)
{
return;
}
//判断状态
switch (state)
{
case PlayerState.idle:
//允许旋转
Rotate();
//允许移动
Move();
//攻击
Attack();
//播放移动动画
animator.SetBool("Run",true);
break;
case PlayerState.die:
break;
case PlayerState.attack:
break;
case PlayerState.attack2:
break;
}
}
//主角旋转控制
void Rotate()
{
transform.rotation = Camera.main.transform.parent.rotation;
}
//主角移动控制
void Move()
{
//获取水平轴
float horizontal = Input.GetAxis("Horizontal");
//获取垂直轴
float vertical = Input.GetAxis("Vertical");
//获取移动向量
Vector3 dir = new Vector3(horizontal, 0, vertical);
//如果按下了移动键
if (dir != Vector3.zero)
{
//纵向移动
rBody.velocity = transform.forward * vertical * 4;
//横向移动
rBody.velocity += transform.right * horizontal * 2;
//切换移动状态
state = PlayerState.idle;
}
}
//攻击
void Attack()
{
//单击鼠标左键攻击
if (Input.GetMouseButtonDown(0))
{
//播放攻击动画
animator.SetTrigger("Attack");
//攻击状态
state = PlayerState.attack;
}
//单击鼠标右键攻击
if (Input.GetMouseButtonDown(1))
{
//播放攻击动画
animator.SetTrigger("Attack2");
//第二种攻击状态
state = PlayerState.attack2;
}
}
void AttackEnd()
{
//恢复为站立状态
state = PlayerState.idle;
}
//受到攻击
public void GetDamage(int damage)
{
//减小血量
Hp -= damage;
//如果血量为0
if (Hp <= 0)
{
//变为死亡状态
state = PlayerState.die;
//播放一次死亡动画
animator.SetTrigger("Die");
}
}
//复活
public void Revive(Vector3 position)
{
//如果是死亡状态
if (state == PlayerState.die)
{
//复活
animator.SetTrigger("Revive");
//复活为站立状态
state = PlayerState.idle;
//复活位置
transform.position = position;
}
}
void Attack1_1()
{
}
void Attack1_2()
{
}
void Attack2_0()
{
}
void Attack2_1()
{
}
void Attack2_2()
{
}
}