使用Unity的Input.GetAxis(“”)控制物體移動(dòng)、旋轉(zhuǎn)
Input.GetAxis(“”) 是 Unity 引擎中的一個(gè)方法,用于獲取游戲玩家在 鍵盤 或 游戲手柄 上輸入的某個(gè)軸(Axis)的值。這里的 “” 是一個(gè)字符串參數(shù),表示要獲取的軸的名稱。
在 Unity 中,有多種軸類型,如 “Horizontal”(水平軸)、“Vertical”(垂直軸)、“Mouse X”(鼠標(biāo)水平滾輪軸)和 “Mouse Y”(鼠標(biāo)垂直滾輪軸)等。這些軸的值可以用來控制游戲角色的移動(dòng)、縮放或旋轉(zhuǎn)等動(dòng)作。這些數(shù)值都處于-1 到1 之間,你可以用代碼:
/*控制左右,x軸*/
float h = Input.GetAxis("Horizontal");
/*控制前后,z軸*/
float v = Input.GetAxis("Vertical");
/*鼠標(biāo)中間前后滑輪控制上下,y軸*/
float mouse = Input.GetAxis("Mouse ScrollWheel");
this.transform.Translate(new Vector3(h * speed, mouse * mouseSpeed, v * speed)*Time.deltaTime, Space.World);
來控制移動(dòng)
參數(shù) Horizontal
以 “Horizontal” 為例,Input.GetAxis(“Horizontal”) 方法會(huì)返回一個(gè)值,表示玩家在水平方向上輸入的值。如果玩家向左移動(dòng)鍵盤或游戲手柄,該值將為負(fù);如果玩家向右移動(dòng),該值將為正。
注:該軸默認(rèn)是由 A、D 或 ←鍵、→鍵 來觸發(fā)
參數(shù) Vertical
Input.GetAxis("Vertical ") 方法會(huì)返回一個(gè)值,表示玩家在垂直方向上輸入的值。如果玩家向下移動(dòng)鍵盤或游戲手柄,該值將為負(fù);如果玩家向上移動(dòng),該值將為正。
注:該軸默認(rèn)是由 W、S 或 ↑鍵、↓鍵 來觸發(fā)
參數(shù) Mouse ScrollWheel
注:該軸默認(rèn)是鼠標(biāo)中間前后滑輪觸發(fā),不是按
參數(shù) “Mouse X” 軸和 “Mouse Y” 軸
返回的值分別表示玩家在垂直方向、鼠標(biāo)水平滾輪和鼠標(biāo)垂直滾輪上的輸入。
在代碼中,我們可以將這些軸的值用于控制游戲角色的移動(dòng)、旋轉(zhuǎn)等動(dòng)作。例如,在您提供的代碼中,MoveHorizontal 和 MoveVertical 變量分別存儲(chǔ)了水平軸和垂直軸的值,用于控制角色在水平方向和垂直方向上的移動(dòng)。
示例代碼:下面這個(gè)代碼實(shí)現(xiàn)控制物體 移動(dòng)和左右、上下旋轉(zhuǎn)
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;//用來累積存儲(chǔ)用戶每次移動(dòng)鼠標(biāo)得出的值
float RotationX;//用來累積存儲(chǔ)用戶每次移動(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);
}
}
其他參數(shù)
-
GetAxis(“Horizontal”);//對應(yīng)鍵盤上的A鍵和D鍵 或←鍵和→鍵
-
GetAxis(“Vertical”); //對應(yīng)鍵盤上的W鍵和S鍵 或↑鍵和↓鍵
-
GetAxis(“Mouse X”); //對應(yīng)X方向上鼠標(biāo)的移動(dòng),在移動(dòng)設(shè)備上也可以這樣
-
GetAxis(“Mouse Y”); //對應(yīng)Y方向上鼠標(biāo)的移動(dòng),在移動(dòng)設(shè)備上也可以這樣
-
GetAxis(“Fire1”); //對應(yīng)鼠標(biāo)左鍵或left+Ctrl
-
GetAxis(“Fire2”); //對應(yīng)鼠標(biāo)右鍵或left+Alt
-
GetAxis(“Fire3”); //對應(yīng)鼠標(biāo)中鍵(是按,不是前后滑動(dòng))或left+shift
-
GetAxis(“Mouse ScrollWheel”); //對應(yīng)鼠標(biāo)中鍵前后滑動(dòng)(不是按)
-
GetAxisRaw(“Fire1”);
input.getAxis()和input.getAxisRaw()的區(qū)別
input.getAxis()的返回值m從0漸變?yōu)?或者-1文章來源:http://www.zghlxwxcb.cn/news/detail-796254.html
input.getAxisRaw()的返回值從0變成1或者-1,沒有漸變文章來源地址http://www.zghlxwxcb.cn/news/detail-796254.html
到了這里,關(guān)于【Unity入門】Input.GetAxis(““)控制物體移動(dòng)、旋轉(zhuǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!