1. 程式人生 > >Unity輸入控制

Unity輸入控制

Unity 中,使用 Input 類獲取使用者輸入,記錄下常用的函式及注意事項。

鍵盤輸入:

Input.GetKeyDown(KeyCode key) 獲取指定按鍵被按下的事件,直到鬆開按鍵再次按下,才能獲取第二次輸入。其中引數 key 與物理按鍵對應,例如KeyCode.A 代表鍵盤上的 ‘A’ 鍵,KeyCode 與 物理按鍵的對映是無法改變的。

      Input.GetKeyUp(KeyCode key) 與 Input.GetKeyDown(KeyCode key) 同理,是在按鍵鬆開的時候獲得輸入。

      Input.GetKey(KeyCode key)  在 key 被持續按住時,呼叫此方法。

滑鼠輸入:

Input.GetMouseButtonDown(int button)

Input.GetMouseButtonUp(int button)

       Input.GetMouseButton(int button)

滑鼠輸入與鍵盤輸入類似,引數 0 代表滑鼠左鍵、引數 1 代表滑鼠右鍵、引數 2 代表滑鼠中鍵。

自定義輸入:

      Unity 允許建立自定義的虛擬軸,虛擬按鍵是虛擬軸的特殊情況,在InputManager 中統一視為虛擬軸。 選擇選單欄中的 Edit->Project Settings->Input  可以開啟InputManager,如圖:

      

Unity 預設建立了18個虛擬軸,每個軸的屬性如圖:

      

Name 是虛擬軸的名稱,通過 Name 在指令碼中訪問虛擬軸,可以為不同的裝置指定同名的虛擬軸,輸入來自於使用者正在使用的那個裝置,在寫指令碼時,無需考慮輸入來自於哪裡。

Negative Button        軸的負按鍵對應的物理按鍵。

Positive Button          軸的正按鍵對應的物理按鍵。

Alt Negative Button   備選負按鍵。

Alt Positive Button     備選正按鍵。

Gravity          當鍵鬆開後,軸復位的速度。 越大表示越快復位。

Dead                          死亡區間,在此區間的值都會被認為是復位值,即0。 個人理解是絕對值在此區間。

Sensitivity                  靈敏度,對按鍵來說是響應速度,與 Gravity 相對,對滑鼠來說是單位時間內移動距離的影響

Snap                          選中後,當按下反方向鍵後,值立刻復位;如果不選中,原方向值不會立刻歸0,會有一個減速到0的過程。

Invert                         選中後,正負按鍵顛倒。

Axis                           這個虛擬軸所對映的裝置輸入軸(搖桿、滑鼠、手柄等)。

 在指令碼中通過以下方法獲取虛擬按鍵輸入:

Input.GetButtonUp(string buttonName)

        Input.GetButtonDown(string buttonName)

Input.GetButton(string buttonName)

獲取軸輸入:

Input.GetAxis(string axisName)    輸入軸的值一般在 -1 到 1之間,滑鼠輸入表示的是移動距離,所以會大於這個範圍。使用虛擬軸的好處是,遊戲釋出後,使用者可以自定義鍵位設定。

Note: 官方文件明確說明,GetXXXUp、GetXXXDown 這類輸入一定要放在 Update() 中,而不是 FixedUpdate() 中, 原因是在每一幀會將輸入重置,意思就是說在 Update() 中一定能檢測到輸入,並將輸入重置。因此如果把此類 Input 方法放在 FixedUpdate() 中,有可能造成漏掉輸入的情況,同時也有可能造成一次輸入檢測出多次。 而 GetKey()、GetButton()、GetMouseButton()、GetAxis() 則沒有明確說明,由於是連續檢測,應該也可以放在 FixedUpdate() 。

相關推薦

Unity輸入控制

Unity 中,使用 Input 類獲取使用者輸入,記錄下常用的函式及注意事項。 鍵盤輸入: Input.GetKeyDown(KeyCode key) 獲取指定按鍵被按下的事件,直到鬆開按鍵再次按下

輸入控制

長度 CA 句子 pri 英文字母 bsp AI 大小寫 iostream 給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。 輸入格式:測試輸入包含一個測試用例,在一行內給出總長度不超過80的字符串。字符串由若幹單詞和若幹空格組成,其中單詞是由英文字母(大小

resetFields 重置一組輸入控制元件的值(為initialValue)與狀態

resetFields 重置一組輸入控制元件的值(為initialValue)與狀態,如不傳引數,則重置所有的元件。 用法:Function([name: string[]]) 例子: isSelectChange(value) { //清除所有的 this.pr

unity聲音控制

Unity中控制聲音播放所需三個必要元件,分別是AudioSource、AudioClip、AudioListener,其作用如下: AudioSource—聲音的控制組件,包含了控制聲音播放、暫停、停止等方法。 AudioClip—聲音的源片段,即需要播放的聲音物件。 AudioLis

ZK輸入控制元件的約束

  Constraint 約束規則 約束條件 解析 no empty 輸入不能為空 no future 不能是以後的時間。用於datebox

STM32 嵌入式學習入門(3)——STM32F103 按鍵輸入控制LED燈

STM32 嵌入式學習入門(3)—— STM32F103 按鍵輸入控制LED燈 按鍵是微控制器上一個很重要的輸入裝置,也很容易掌握,只要明白了IO口最基本的使用,就可以操作按鍵了。 我們的目的是控制開發板上板載的三個按鍵來操作開發

STM32 嵌入式學習入門(2)——STM32的GPIO介紹 STM32 嵌入式學習入門(3)——STM32F103 按鍵輸入控制LED燈

STM32簡介及STM32學習方法簡介 STM32是新的基於ARM核心的32位MCU系列,該核心為ARM公司為要求高效能、低成本、低功耗的嵌入式應用專門設計的Cortex-M核心,該核心採用標準的ARM架構。該核心具有超前的體系結構以及高效能、低電壓、低功耗,且

Unity滑鼠控制相機上下左右環視360度旋轉(Quaternion.AngleAxis)

之前實現的是相機的360度旋轉,用的是LocalEulerAngle,這一篇文章實現用的是Quaternion.AngleAxis,這個方法將繞某個軸旋轉的角度轉為四元數 目前的四元數=初始的四元數*繞X軸轉的四元數*繞Y軸轉的四元數  理解也比較好理解,就是繞某個軸旋轉

GPIO輸入控制

GPIO輸入暫存器 GPIO輸入暫存器GPIO_IN BIT[15:0]輸入狀態位(可讀可寫):若對應的位為1,表示該IO的引腳狀態為高電平;若對應的位為低電平,表示該IO的引腳狀態為低電平。BIT[15:0]對應16個GPIO的輸入狀態位。 輸入相關巨集定義

Unity樹形控制元件(Tree View)的使用

1.下載外掛Tree View匯入到工程中。下載地址:https://assetstore.unity.com/packages/tools/gui/tree-view-65364。 2.新建場景,新建Canvas,將Assets\Battlehub\UIControls

textField輸入控制(百分數)

要求輸入正確百分數 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

【Visual C++】遊戲開發筆記四十二 淺墨DirectX教程之十 遊戲輸入控制利器:DirectInput專場

本系列文章由zhmxy555(毛星雲)編寫,轉載請註明出處。  ----------------------------------------------------------------------------------------------------------

AngularJS:實現動態新增輸入控制元件功能

1 <div class="form-group" ng-controller="SendSafeMessageController"> 2 <label class="col-md-2 control-label">答覆內容:</label> 3 &

手把手教你JavaScript-簡單的頁面輸入控制

1.姓名只能是漢字 var nameCheck =/^[\u4e00-\u9fa5]{2,21}$/; if(!nameCheck .test(name)){ alert("輸入的'姓名'中含有非漢字字元!"); return false;

Wijmo:使用Angular2建立HTML5/TypeScript的輸入控制元件

從2016 v1版本開始,Wijmo UI控制元件支援Angular 2。Wijmo 2016 v1強勢釋出,全面支援Angular 2!本文就來介紹使用Angular2來建立基於HTML5/TypeScript的輸入控制元件。 步驟: 1. 使用Vi

unity三大控制物體移動的元件

Transform元件: Rigidbody元件: CharacterController元件:角色控制器元件也屬於物理元件,在Physic物理屬性下,我查資料顯示角色控制器主要用於第三人稱和第一人稱遊戲主角(人形為主)的控制 使用SimpleMove控制角色移動,這裡附上程式碼方便自己記憶

GPIOA高8位輸入控制低8位輸出(位運算)

1、位操作 int main() { //高8位浮空輸入,低8位推輓輸出 GPIOA->CRH = 0x44444444; GPIOA->CRL = 0x

unity 滑鼠控制第一人稱視角及鍵盤控制移動

指令碼MouseLook(在主相機上): using UnityEngine; using System.Collections; public class Mouselook : MonoBehaviour { public enum RotationAxes{

Unity人物控制

①運用axis進行人物移動控制 using UnityEngine; public class MoveCtr : MonoBehaviour { private float _v; private float _h; private Rigidbody _ri

unity——角色控制以及網路元件

角色通過WSAD來控制移動,主要是通過獲取X,Z軸上的輸入值之後,進行旋轉和移動的運算 using UnityEngine; using System.Collections; using UnityEngine.Networking; public clas