Unity輸入與控制(摘要)

處理用戶的shuru是游戲中必不可少的元素。Unity提供了一個非常強大易用的處理輸入信息的類 —— Input,它可以處理鼠標、鍵盤、遙感/方向盤/手柄等游戲外設的輸入信息,也可以處理 IOS/Android 等移動設備的觸摸輸入信息。Input Manager (輸入管理器)用于為項目定義各種不同的輸入軸和操作。開發人員可以通過編寫腳本接收輸入信息,完成與用戶的交互。

Input Manager(輸入管理器)

Input 類時處理輸入的接口,下面包含成員變量和函數的簡要介紹。
Input 類成員變量

成員變量 說明
acceleration 得到設備當前在三維空間中的線性加速度(只讀)
accelerationEventCount 得到上一幀的加速度參數數據長度
accelerationEvents 得到上一幀的加速度數據列表(只讀)(分配臨時變量)
anyKey 是否有按鍵按下(只讀)
anyKeyDown 當有任意按鍵按下的第一幀返回true(只讀)
compass 羅盤屬性(僅支持手持設備)(只讀)
comenstateSensors 是否需要根據屏幕方向補償感應器
compositionCursorPos 當前IME組合字符串的光標位置
compositionString 用戶通過IME輸入的組合字符串
deviceOrientation 操作系統提供的設備方向(只讀)
gyro 返回默認的陀螺儀
imeCompositionMode 設置IME組合模式
imelsSelected 當前是否啟用了IME輸入鍵盤
inputString 得到當前幀的鍵盤輸入字符串(只讀)
mousePosition 鼠標位置的像素坐標(只讀)
multiTouchEnabled 系統是否支持多點觸摸
simulateMouseWithTouches 屏幕觸控模擬鼠標的點擊
touchCount 當前所有觸摸狀態列表長度(只讀)
touches 當前所有觸摸狀態列表(只讀)(分配臨時變量)
touchSupported 返回應用程序正在運行的設備是否支持觸摸輸入

Input 類成員函數

成員函數 說明
GetAccelerationEvent 返回指定的上一幀加速度測量數據(不分配臨時變量)
GetAxis 根據名稱得到虛擬輸入軸的值
GetAxisRaw 根據名稱得到虛擬坐標軸的未使用平滑過濾的值
GetButton 如果指定名稱的虛擬鍵被按下,那么期間持續返回 true
GetButtonDown 指定名稱的虛擬按鍵被按下的那一幀返回 true
GetButtonUp 指定名稱的虛擬按鍵被松開的那一幀返回 true
GetJoystickNames 返回當前連接的所有搖桿的名稱數組
GetKey 當指定的按鍵被按下期間持續返回 true
GetKeyDown 當指定的按鍵被按下的那幀返回 true
GetKeyUp 當指定的按鍵被松開的那幀返回 true
GetMouseButton 指定的鼠標按鍵是否按下
GetMouseButtonDown 指定的鼠標俺家松開的那一幀返回 true
GetMouseButtonUp 指定的鼠標按鍵松開的那一幀返回 true
GetTouch 返回指定的觸摸數據對象(不分配臨時變量)
IsJoystickPreconfigured 配置默認的搖桿輸出(只限Linux)
ResetInputAxes 重置所有輸入,調用該方法后所有方向軸和按鍵的數值都變為 0

Key 和 Button 的區別:
  在Input類中,Key與物理按鍵對應,例如鍵盤、鼠標、搖桿上的按鍵,其映射關系無法改變,可以通過按鍵名稱或者按鍵編碼KeyCode來獲取其輸入狀態。例如GetKeyDown(KeyCode.A)會在按下鍵盤 “A”鍵時返回true。
  而Button 是輸入管理器 Input Manager 中定義的虛擬按鍵,通過名稱來訪問。開發者可以根據需要創建和命名虛擬按鍵,并設置與物理按鍵(及其組合)的消息映射。依次選擇菜單欄中的 Edit -> Project Settings -> Input 命令,即可打開輸入管理器。
  Key 不可改變,Button可以靈活的配置輸入,并且可以讓玩家來自定義鍵位輸入,因此在開發中推薦使用虛擬按鍵。

輸入軸Axis:
  輸入軸Axis用來模擬平滑變化的輸入,例如搖桿的變化、方向盤的轉動等,需要在輸入管理器中進行配置。它包含政府兩個虛擬按鍵(Positive Button 和 Negative Button)。可以吧一個輸入軸想象成一個滑動條,左邊取值 -1,右邊取值為 1。當按下按鍵時,數值會逐漸從 0 向一端變化,實現漸變的效果,而不會顯得突兀。(例如汽車啟動)

鼠標輸入

(1)鼠標相應事件示例:

    void Update() {
        if(Input.GetMouseButton(0)) {//左鍵按下
            print("鼠標左鍵按下");
        }
        if(Input.GetMouseButtonDown(1)) {//右鍵按下
            print("鼠標右鍵按下");
        }
        if(Input.GetMouseButtonUp(2)) {//中鍵抬起
            print("鼠標中鍵抬起");
            print("鼠標當前位置:" + Input.mousePosition);
        }
    }

(2)鼠標控制物體旋轉:

void Update() {
        float horizontalSpeed = 2.0f;
        float verticalSpeed = 2.0f;

        float h = horizontalSpeed * Input.GetAxis ("Mouse X");
        float v = verticalSpeed * Input.GetAxis ("Mouse Y");
        transform.Rotate (v, h, 0);
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370

推薦閱讀更多精彩內容

  • 手機端配置tcp方式連接 su setprop service.adb.tcp.port 5555 stop ad...
    yoyo鹿鳴閱讀 5,685評論 0 4
  • 例子: //這條命令相當于按了設備的Backkey鍵 adb shell input keyevent 4 //可...
    井望閱讀 14,237評論 0 5
  • 虛擬軸 ?認識 把不同設備的輸入映射到虛擬軸中,簡化了編程的模型。 輸入管理器 1)輸入管理器可以設置項目的各種輸...
    困卡閱讀 1,386評論 0 1
  • 任何游戲都應該提供給用戶交互的方式,可以想象一個沒有任何交互的游戲是什么樣的。如果沒有輸入系統帶來的,用戶與游戲的...
    游戲開發小Y閱讀 2,404評論 0 3
  • 角色控制是游戲設計中必不可少的一個設計環節,這一節我們講一講如何制作基本的角色運動控制交互邏輯。 因為是簡單實例教...
    shimmery閱讀 9,493評論 5 20