使用Unity的Input.GetAxis("")控制物体移动、旋转
Input.GetAxis("")
是 Unity 引擎中的一个方法,用于获取游戏玩家在键盘或游戏手柄上输入的某个轴(Axis)的值。这里的 "" 是一个字符串参数,表示要获取的轴的名称。
在 Unity 中,有多种轴类型,如 "Horizontal"(水平轴)、"Vertical"(垂直轴)、"Mouse X"(鼠标水平滚轮轴)和 "Mouse Y"(鼠标垂直滚轮轴)等。这些轴的值可以用来控制游戏角色的移动、缩放或旋转等动作。这些数值都处于-1 到1 之间,你可以用代码:
float INPUTaXIS = Input.GetAxis("Horizontal");
Debug.Log(INPUTaXIS);
来输出检测这个数值!
01 "Horizontal"
以 "Horizontal" 为例,Input.GetAxis("Horizontal")
方法会返回一个值,表示玩家在水平方向上输入的值。如果玩家向左移动键盘或游戏手柄,该值将为负;如果玩家向右移动,该值将为正。
该轴默认是由A、D以及方向键左右箭头来触发!
02 "Vertical" 轴
类似地,对于 "Vertical" 轴
该轴默认是由W、S以及方向键上下箭头来触发!
03 "Mouse X" 轴和 "Mouse Y" 轴
返回的值分别表示玩家在垂直方向、鼠标水平滚轮和鼠标垂直滚轮上的输入。
在代码中,我们可以将这些轴的值用于控制游戏角色的移动、旋转等动作。例如,在您提供的代码中,MoveHorizontal
和 MoveVertical
变量分别存储了水平轴和垂直轴的值,用于控制角色在水平方向和垂直方向上的移动。
示例代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ConRole : MonoBehaviour
{
// yong鼠标控制方向,用方向键控制移动
// 设置角色的移动速度和旋转速度
public float Movespeed = 15f;
public float Rotatespeed = 10f;
// Update is called once per frame
void Update()
{
// 获取水平方向和垂直方向的输入值
float MoveHorizontal = Input.GetAxis("Horizontal");
float MoveVertical = Input.GetAxis("Vertical");
//全部存到向量里面
Vector3 MoveDir = new Vector3(MoveHorizontal,0, MoveVertical);
//transform.position += MoveDir * Movespeed * Time.deltaTime;
//上面这句不能保持物体朝自己的Z正方移动,因此用下面的语句
transform.Translate(MoveDir * Movespeed * Time.deltaTime, Space.Self);
// 获取鼠标的旋转输入值 ,Mouse X 是来源鼠标在水平方向的移动数值转换返回为-1 - 1 之间的数值
float XRotaY = Input.GetAxis("Mouse X");
transform.Rotate(new Vector3(0,1* XRotaY * Rotatespeed,0),Space.Self);
}
}