Unity的移動裝置輸入

2021-09-12 23:12:27 字數 1381 閱讀 7490

ios與android裝置能夠跟蹤多個手指同時觸控螢幕的事件,通過訪問 input.touches 屬性陣列,我們可以訪問在遊戲的最後一幀中每個手指觸控螢幕的狀態資料。

當裝置移動時,其加速度計硬體會反饋沿三維空間中的三個主軸的線性加速度變化。我們可以根據此資料來檢測裝置的當前方向(相對於地面)以及該方向上的任何即時更改。

沿著每個軸的加速度由硬體直接反饋為g-fource值。g-fource值1.0表示沿給定虛軸增加約+1g的載荷,而g-fource值-1.0表示負載-1g。如果我們將裝置豎直握住(裝置底部為主頁按鈕),則x軸向右為正,y軸向上為正,z軸向「我」為正。

我們可以通過input.acceleration 屬性以獲取加速度計資料,並使用 input.deviceorientation 屬性來獲取裝置在三維空間中各方向的離散評估。當使用者旋轉裝置,以不同的方式持有裝置時,如果要重建遊戲行為,檢測方向上的改變是有必要的。

需要注意的是,每幀可以多次訪問加速度計硬體。如果要訪問從上一幀以來的所有加速度計樣本,我們可以讀取input.accelerationevents 屬性陣列,這在重建玩家動作,將加速度資料輸入**器或實施其他精確運動分析時非常有用。

1)public static accelerationevent getaccelerationevent(int index)

作用:獲取某個加速度事件(accelerationevent,用於描述裝置的加速度狀態,包括加速度值(acceleration)和從上一次加速度計測量到現在的時間(deltatime))。input.accelerationeventcount屬性記錄了上一幀中加速度事件的測量次數,而input.accelerationevents屬性陣列則儲存了上一幀中的每乙個加速度事件,傳給getaccelerationevent函式的引數index就是某加速度事件的屬性陣列下標。

2)public static touch gettouch(int index)

作用:獲取某個touch結構體(touch結構體描述手指觸控螢幕的狀態)。裝置可以跟蹤觸控螢幕上多種觸控資料,包括其相位(phase,即觸控是否開始、移動、停止、結束或取消)、其位置(position)以及觸控是單次接觸還是幾次敲擊(tapcount)。裝置還可以檢測每兩幀更新之間的觸控連續性,因此可以跨幀反饋一致的id號並用於確定特定手指的移動方式。每幀更新後都需要重新呼叫gettouch函式以獲取裝置的最新觸控資訊,但fingerid屬性可用於識別兩幀之間的相同觸控input.touchcount屬性記錄當前螢幕的觸控次數。 如果input.touchcount大於零,則gettouch索引將設定要檢查的螢幕觸控。例如,touch tc = input.gettouch(0); 表示獲取第一次的觸屏狀態。該函式與觸屏裝置(或大多數移動裝置)的輸入相關。

Unity手機移動裝置重力感應

大家對重力感應應該都不陌生,之前玩過的王者榮耀的資源更新介面就是使用了重力感應的概念,根據手機的晃動來給實體進行晃動。下圖的王者榮耀剛開始的介面其實就是使用的移動裝置的重力感應。unity內部的重力感應其實已經寫好了,這篇文章只是講下如何使用。unity內部有乙個input.acceleration...

Unity移動裝置手勢操作拾遺

在日常的unity開發中,經常會面臨觸發選擇的問題,是使用原生的onmousedown ngui外掛程式還是fingergesture外掛程式呢?這裡就梳理下三者的關係。原生的onmousedown up是最直接的方式,正如字面意思,是特指的pc的mouse,在移動裝置上不支援 當前版本 ngui外...

unity人物移動

建議使用以下做法 給人物加character controller,然後在指令碼中獲取人物的角色控制器 charactercontroller character fighter.getcomponent fighter是人物對應的gameobject物件 然後利用character移動,例如控制角...