成都專(zhuān)業(yè)網(wǎng)站推廣公司百度推廣有哪些形式
使用Unity的Input.GetAxis(“”)控制物體移動(dòng)、旋轉(zhuǎn)
Input.GetAxis(“”) 是 Unity 引擎中的一個(gè)方法,用于獲取游戲玩家在 鍵盤(pán) 或 游戲手柄 上輸入的某個(gè)軸(Axis)的值。這里的 “” 是一個(gè)字符串參數(shù),表示要獲取的軸的名稱(chēng)。
在 Unity 中,有多種軸類(lèi)型,如 “Horizontal”(水平軸)、“Vertical”(垂直軸)、“Mouse X”(鼠標(biāo)水平滾輪軸)和 “Mouse Y”(鼠標(biāo)垂直滾輪軸)等。這些軸的值可以用來(lái)控制游戲角色的移動(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);
來(lái)控制移動(dòng)
參數(shù) Horizontal
以 “Horizontal” 為例,Input.GetAxis(“Horizontal”) 方法會(huì)返回一個(gè)值,表示玩家在水平方向上輸入的值。如果玩家向左移動(dòng)鍵盤(pán)或游戲手柄,該值將為負(fù);如果玩家向右移動(dòng),該值將為正。
注:該軸默認(rèn)是由 A、D 或 ←鍵、→鍵 來(lái)觸發(fā)
參數(shù) Vertical
Input.GetAxis("Vertical ") 方法會(huì)返回一個(gè)值,表示玩家在垂直方向上輸入的值。如果玩家向下移動(dòng)鍵盤(pán)或游戲手柄,該值將為負(fù);如果玩家向上移動(dòng),該值將為正。
注:該軸默認(rèn)是由 W、S 或 ↑鍵、↓鍵 來(lái)觸發(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;//用來(lái)累積存儲(chǔ)用戶(hù)每次移動(dòng)鼠標(biāo)得出的值float RotationX;//用來(lái)累積存儲(chǔ)用戶(hù)每次移動(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),因此用下面的語(yǔ)句transform.Translate(MoveDir * Movespeed * Time.deltaTime, Space.Self);//【控制物體旋轉(zhuǎn)】// 獲取鼠標(biāo)的旋轉(zhuǎn)輸入值 ,Mouse X\ MouseY 是來(lái)源鼠標(biāo)在水平方向的移動(dòng)數(shù)值轉(zhuǎn)換返回為-1 - 1 之間的數(shù)值float RotaY = Input.GetAxis("Mouse X");//鼠標(biāo)水平移動(dòng)返回-1 - + 1,這個(gè)數(shù)值將來(lái)用來(lái)給物體繞Y軸旋轉(zhuǎn)float RotaX = Input.GetAxis("Mouse Y");//鼠標(biāo)水平移動(dòng)返回-1 - + 1,這個(gè)數(shù)值將來(lái)用來(lái)給物體繞X軸旋轉(zhuǎn)//這是使用歐拉角的旋轉(zhuǎn)方式,這種旋轉(zhuǎn)有個(gè)缺陷就是,旋轉(zhuǎn)一個(gè)軸沒(méi)有問(wèn)題!不能同時(shí)旋轉(zhuǎn)2個(gè)及以上的軸。//transform.Rotate(new Vector3(RotaX * Rotatespeed,RotaY * Rotatespeed,0),Space.Self); //旋轉(zhuǎn)2個(gè)及以上的軸,需要用四元數(shù)賦值給RetationRotationY += 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”);//對(duì)應(yīng)鍵盤(pán)上的A鍵和D鍵 或←鍵和→鍵
-
GetAxis(“Vertical”); //對(duì)應(yīng)鍵盤(pán)上的W鍵和S鍵 或↑鍵和↓鍵
-
GetAxis(“Mouse X”); //對(duì)應(yīng)X方向上鼠標(biāo)的移動(dòng),在移動(dòng)設(shè)備上也可以這樣
-
GetAxis(“Mouse Y”); //對(duì)應(yīng)Y方向上鼠標(biāo)的移動(dòng),在移動(dòng)設(shè)備上也可以這樣
-
GetAxis(“Fire1”); //對(duì)應(yīng)鼠標(biāo)左鍵或left+Ctrl
-
GetAxis(“Fire2”); //對(duì)應(yīng)鼠標(biāo)右鍵或left+Alt
-
GetAxis(“Fire3”); //對(duì)應(yīng)鼠標(biāo)中鍵(是按,不是前后滑動(dòng))或left+shift
-
GetAxis(“Mouse ScrollWheel”); //對(duì)應(yīng)鼠標(biāo)中鍵前后滑動(dòng)(不是按)
-
GetAxisRaw(“Fire1”);
input.getAxis()和input.getAxisRaw()的區(qū)別
input.getAxis()的返回值m從0漸變?yōu)?或者-1
input.getAxisRaw()的返回值從0變成1或者-1,沒(méi)有漸變