天天看點

Unity3D Input按鍵系統

預設輸入軸:

  Horizontal 和 Vertical被映射到w, a, s, d鍵和方向鍵

  Fire1, Fire2, Fire3被分别映射到Ctrl,Option(Alt)和Command鍵

  Mouse X 和 Mouse Y被映射到滑鼠移動增量

  Window Shake X 和 Window Shake Y 被映射到視窗的移動

  添加新的輸入軸

  添加新的虛拟軸,選擇菜單Edit->Project Settings->Input :

  名稱(Name):名稱用于從腳本使用這個軸

  描述名稱(Descriptive Name):正值名稱顯示于配置對話框的輸入标簽,用于獨立版。

  描述負名稱(Descriptive Negative Name):負值名稱顯示于配置對話框的輸入标簽,用于獨立版。

  負按鈕(Negative Button):該按鈕用于在負方向移動軸 (如:左)

  正按鈕(Positive Button):該按鈕用于在正方向移動軸 (如:右)

  備選負按鈕(Alt Negative Button):備選按鈕用于在負方向移動軸(如:a)

  備選正按鈕(Alt Positive Button):備選按鈕用于在正方向移動軸 (如:d)

  重力(Gravity):當沒有按鈕被按下,在機關每秒速度,軸下降到0。

  死亡(Dead):模拟的死區大小。 設定範圍内所有模拟裝置的值為0。

  靈敏度(Sensitivity):在機關每秒速度,軸将移向目标值。這近用于數位裝置。

  捕捉(Snap):如果啟用,當按下相反方向的按鈕,該軸值将重設為0。

  反向(Invert):如果啟用,負按鈕将提供一個正值,反之亦然。

  類型(Type):控制軸的輸入裝置類型

  軸(Axis):連接配接裝置的軸将控制這個軸 (因為上面正負按鈕設定的是左右,是以這裡要選X軸)

  操作杆(Joy Num)連接配接操縱杆将控制這個軸

  移動裝置輸入

  unity 為你提供通路iOS/android系統的Input 和 iOS Input腳本接口。

  多點觸控

  觸控清單(Input.touches):傳回上一幀所有觸控狀态的對象清單(Touch[]:單個觸摸狀态)。

  觸控狀态(TouchPhase):(例子:if(touch.phase != TouchPhase.Began))

  Began:手指已觸摸螢幕。

  Moved:手指在螢幕上移動。

  Stationary:手指觸摸螢幕,但并沒有移動。

  Ended:手指從螢幕上移開。這是一個觸摸的最後狀态。

  Canceled:系統取消跟蹤觸摸,如使用者把螢幕放到他臉上或超過五個接觸同時發生。這是一個觸摸的最後狀态。

  裝置面朝方向

  Input.deviceOrientation : (例子:if (Input.deviceOrientation == DeviceOrientation.FaceDown))

  Unknown:裝置的方向不能被确定。

  Portrait:裝置在縱向模式,裝置直立并home按鈕在底部。

  PortraitUpsideDown:裝置在縱向模式,但颠倒一下,裝置直立并home按鈕在頂部。

  LandscapeLeft:裝置在橫向模式,裝置直立并home按鈕在右邊。

  LandscapeRight:裝置在橫向模式,裝置直立并home按鈕在左邊。

  FaceUp:裝置保持與地面平行,螢幕的面向上。

  FaceDown:裝置保持與地面平行,螢幕的面向下。

  加速傳感器

  Input.acceleration :豎直拿着裝置(home按鈕在底部),X軸指向右,Y軸指向上,Z軸指向前。

  加速度傳感器數值可能被颠簸影響。應用低通過過濾器可以是它平滑,擺脫幹擾。

//加速器重新整理間隔

float AccelerometerUpdateInterval = 1.0f / 60.0f;

//值越大, 被過濾值将彙集目前輸入采樣越慢

float LowPassKernelWidthInSeconds = 1.0f;

//過濾範圍

private float LowPassFilterFactor = AccelerometerUpdateInterval / LowPassKernelWidthInSeconds;

private Vector3 lowPassValue = Vector3.zero;

void Start () {

lowPassValue = Input.acceleration;

}

//過濾方法 (擷取加速量調用此方法即可)

Vector3 LowPassFilterAccelerometer(){

lowPassValue = Mathf.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor);

return lowPassValue;

更多unity2018的功能介紹請到paws3d爪爪學院查找。

繼續閱讀