?Input.GetAxis("")?是 Unity 引擎中的一個(gè)方法,用于獲取游戲玩家在鍵盤或游戲手柄上輸入的某個(gè)軸(Axis)的值。這里的 "" 是一個(gè)字符串參數(shù),表示要獲取的軸的名稱。只要游戲運(yùn)行Unity在后臺就實(shí)時(shí)通過GetAxis這些定義好的方法幫你檢測用戶鍵盤、手柄、鼠標(biāo),你只需要用這個(gè)方法nput.GetAxis("")?調(diào)用就可以獲取到用戶輸入?了那個(gè)鍵盤、點(diǎn)了那個(gè)鍵!
為了區(qū)分是鼠標(biāo)還是鍵盤、手柄等等,需要在這個(gè)方法里面天上?你要獲取的交互鍵名字。
在 Unity 中,有多種軸類型,如 "Horizontal"(水平軸)、"Vertical"(垂直軸)、"Mouse X"(鼠標(biāo)水平滾輪軸)和 "Mouse Y"(鼠標(biāo)垂直滾輪軸)等。這些軸的值可以用來控制游戲角色的移動(dòng)、縮放或旋轉(zhuǎn)等動(dòng)作。這些數(shù)值都處于-1 到1 之間,你可以用代碼:
?
float INPUTaXIS = Input.GetAxis("Horizontal");
Debug.Log(INPUTaXIS);
來輸出檢測這個(gè)數(shù)值!?
01 "Horizontal"
以 "Horizontal" 為例,Input.GetAxis("Horizontal")
方法會返回一個(gè)值,表示玩家在水平方向上輸入的值。如果玩家向左移動(dòng)鍵盤或游戲手柄,該值將為負(fù);如果玩家向右移動(dòng),該值將為正。
該軸默認(rèn)是由A、D以及方向鍵左右箭頭來觸發(fā)!
02 "Vertical" 軸
類似地,對于 "Vertical" 軸
該軸默認(rèn)是由W、S以及方向鍵上下箭頭來觸發(fā)!
03 "Mouse X" 軸和 "Mouse Y" 軸
返回的值分別表示玩家在垂直方向、鼠標(biāo)水平滾輪和鼠標(biāo)垂直滾輪上的輸入。
在代碼中,我們可以將這些軸的值用于控制游戲角色的移動(dòng)、旋轉(zhuǎn)等動(dòng)作。例如,在您提供的代碼中,MoveHorizontal
和 MoveVertical
變量分別存儲了水平軸和垂直軸的值,用于控制角色在水平方向和垂直方向上的移動(dòng)。文章來源:http://www.zghlxwxcb.cn/news/detail-715722.html
示例代碼:下面這個(gè)代碼實(shí)現(xiàn)控制物體 移動(dòng)和左右、上下旋轉(zhuǎn)文章來源地址http://www.zghlxwxcb.cn/news/detail-715722.html
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ConRole : MonoBehaviour
{
// yong鼠標(biāo)控制方向,用方向鍵控制移動(dòng)
// 設(shè)置角色的移動(dòng)速度和旋轉(zhuǎn)速度
public float Movespeed = 15f;
public float Rotatespeed = 10f;
float RotationY;//用來累積存儲用戶每次移動(dòng)鼠標(biāo)得出的值
float RotationX;//用來累積存儲用戶每次移動(dòng)鼠標(biāo)得出的值
void Update()
{
// 【控制物體移動(dòng)】獲取水平方向和垂直方向的輸入值
float MoveHorizontal = Input.GetAxis("Horizontal");
float MoveVertical = Input.GetAxis("Vertical");
//全部存到一個(gè)向量里面
Vector3 MoveDir = new Vector3(MoveHorizontal,0, MoveVertical);
//上面這句不能保持物體朝自己的Z正方移動(dòng),因此用下面的語句
transform.Translate(MoveDir * Movespeed * Time.deltaTime, Space.Self);
//【控制物體旋轉(zhuǎn)】
// 獲取鼠標(biāo)的旋轉(zhuǎn)輸入值 ,Mouse X\ MouseY 是來源鼠標(biāo)在水平方向的移動(dòng)數(shù)值轉(zhuǎn)換返回為-1 - 1 之間的數(shù)值
float RotaY = Input.GetAxis("Mouse X");//鼠標(biāo)水平移動(dòng)返回-1 - + 1,這個(gè)數(shù)值將來用來給物體繞Y軸旋轉(zhuǎn)
float RotaX = Input.GetAxis("Mouse Y");//鼠標(biāo)水平移動(dòng)返回-1 - + 1,這個(gè)數(shù)值將來用來給物體繞X軸旋轉(zhuǎn)
//這是使用歐拉角的旋轉(zhuǎn)方式,這種旋轉(zhuǎn)有個(gè)缺陷就是,旋轉(zhuǎn)一個(gè)軸沒有問題!不能同時(shí)旋轉(zhuǎn)2個(gè)及以上的軸。
//transform.Rotate(new Vector3(RotaX * Rotatespeed,RotaY * Rotatespeed,0),Space.Self);
//旋轉(zhuǎn)2個(gè)及以上的軸,需要用四元數(shù)賦值給Retation
RotationY += RotaY * Rotatespeed*Time.deltaTime;
RotationX+= RotaX * Rotatespeed * Time.deltaTime;
this.transform.rotation = Quaternion.Euler(RotationX, RotationY, 0);
LimtRotatX();
}
void LimtRotatX()
{//限制了上下旋轉(zhuǎn)也就是圍繞X軸旋轉(zhuǎn)的最小角度和最大角度 !注意 -50 代表后仰旋轉(zhuǎn)!60 度代表了!往前旋轉(zhuǎn)!
RotationX = Mathf.Clamp(RotationX,-50,60);
}
}
到了這里,關(guān)于使用Unity的Input.GetAxis(““)控制物體移動(dòng)、旋轉(zhuǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!