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