Unity3D Input按键系统
原創(chuàng)文章如需轉(zhuǎn)載請注明:轉(zhuǎn)載自 脫莫柔Unity3D學習之旅?QQ群:【119706192】?本文鏈接地址: Unity3D Input按鍵系統(tǒng)
默認輸入軸:
- 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):模擬的死區(qū)大小。 設定范圍內(nèi)所有模擬設備的值為0。
- 靈敏度(Sensitivity):在單位每秒速度,軸將移向目標值。這近用于數(shù)碼設備。
- 捕捉(Snap):如果啟用,當按下相反方向的按鈕,該軸值將重設為0。
- 反向(Invert):如果啟用,負按鈕將提供一個正值,反之亦然。
- 類型(Type):控制軸的輸入設備類型
- 軸(Axis):連接設備的軸將控制這個軸 (因為上面正負按鈕設置的是左右,所以這里要選X軸)
- 操作桿(Joy Num)連接操縱桿將控制這個軸
移動設備輸入
Unity 為你提供訪問iOS/Android系統(tǒng)的Input?和?iOS Input腳本接口。
多點觸控
觸控列表(Input.touches):返回上一幀所有觸控狀態(tài)的對象列表(Touch[]:單個觸摸狀態(tài))。
觸控狀態(tài)(TouchPhase):(例子:if(touch.phase != TouchPhase.Began))
- Began:手指已觸摸屏幕。
- Moved:手指在屏幕上移動。
- Stationary:手指觸摸屏幕,但并沒有移動。
- Ended:手指從屏幕上移開。這是一個觸摸的最后狀態(tài)。
- Canceled:系統(tǒng)取消跟蹤觸摸,如用戶把屏幕放到他臉上或超過五個接觸同時發(fā)生。這是一個觸摸的最后狀態(tài)。
設備面朝方向
Input.deviceOrientation : (例子:if (Input.deviceOrientation == DeviceOrientation.FaceDown))
- Unknown:設備的方向不能被確定。
- Portrait:設備在縱向模式,設備直立并home按鈕在底部。
- PortraitUpsideDown:設備在縱向模式,但顛倒一下,設備直立并home按鈕在頂部。
- LandscapeLeft:設備在橫向模式,設備直立并home按鈕在右邊。
- LandscapeRight:設備在橫向模式,設備直立并home按鈕在左邊。
- FaceUp:設備保持與地面平行,屏幕的面向上。
- FaceDown:設備保持與地面平行,屏幕的面向下。
加速傳感器
Input.acceleration :豎直拿著設備(home按鈕在底部),X軸指向右,Y軸指向上,Z軸指向前。
加速度傳感器數(shù)值可能被顛簸影響。應用低通過過濾器可以是它平滑,擺脫干擾。
//加速器刷新間隔 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; }//過濾方法 (獲取加速量調(diào)用此方法即可) Vector3 LowPassFilterAccelerometer(){lowPassValue = Mathf.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor);return lowPassValue;
}
?
GPS地理位置定位
通過iPhoneSettings.StartLocationServiceUpdates()方法開始定位服務的更新。最后通過iPhoneInput.lastLocation可以收回位置坐標變量。
API: static void?StartLocationServiceUpdates?(?float?desiredAccuracyInMeters?= 10f,float updateDistanceInMeters?= 10f)
參數(shù)1:desiredAccuracyInMeters - 理想服務精確度(單位是米)。使用更高的值像500通常不需要打開GPS芯片從而保持電池電量,像5-10的值可以被用來得到最好的精確度。默認值是10米。
參數(shù)2:updateDistanceInMeters - 最小的距離(單位是米)的一種服務在橫向移動之前必須更新iPhoneInput.lastLocation屬性。像500意味著更少的開銷。默認的是10米。
void Start () {// 開始服務在查詢定位之前 iPhoneSettings.StartLocationServiceUpdates(); // 等待知道服務初始化//iPhoneSettings.locationServiceStatus為當前服務狀態(tài)int maxWait = 20;while (iPhoneSettings.locationServiceStatus == LocationServiceStatus.Initializing && maxWait > 0) {yield return WaitForSeconds(1);maxWait--;}// 在20秒內(nèi)服務沒有初始化if (maxWait < 1) {print("Timed out");return;}// 用戶拒絕訪問定位服務if (iPhoneSettings.locationServiceStatus == LocationServiceStatus.Failed) {print("User denied access to device location");return;}// 被給予許可并且定位數(shù)值可以取回else {print("Location: " + iPhoneInput.lastLocation.latitude + " " +iPhoneInput.lastLocation.longitude + " " +iPhoneInput.lastLocation .altitude+ " " +iPhoneInput.lastLocation.horizontalAccuracy + " " +iPhoneInput.lastLocation.timestamp);}// 如果不需要持續(xù)查詢刷新定位停止服務 iPhoneSettings.StopLocationServiceUpdates(); }
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/fortomorrow/archive/2012/11/01/unity08.html
總結(jié)
以上是生活随笔為你收集整理的Unity3D Input按键系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#一列数的规则如下: 1、1、2、3、
- 下一篇: c++对象的内存布局2--进阶篇---C