Unity輸入與控制(摘要)

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

Input Manager(輸入管理器)

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

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

Input 類成員函數(shù)

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

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

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

鼠標輸入

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

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

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

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);
    }
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容