Unity3D游戲開發(fā)之鍵盤、操縱桿和游戲手柄輸入實現(xiàn)詳解_第1頁
Unity3D游戲開發(fā)之鍵盤、操縱桿和游戲手柄輸入實現(xiàn)詳解_第2頁
Unity3D游戲開發(fā)之鍵盤、操縱桿和游戲手柄輸入實現(xiàn)詳解_第3頁
Unity3D游戲開發(fā)之鍵盤、操縱桿和游戲手柄輸入實現(xiàn)詳解_第4頁
Unity3D游戲開發(fā)之鍵盤、操縱桿和游戲手柄輸入實現(xiàn)詳解_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Unity3D游戲開發(fā)之鍵盤、操縱桿和游戲手柄輸入實現(xiàn)詳解輸入桌面支持鍵盤、操縱桿和游戲手柄輸入。可以在輸入管理器的配置對話框中配置鍵盤。中創(chuàng)建虛擬軸和按鈕,終端用戶可以在簡潔美觀ComrotPrnajSe-condaryTiltLeftleftTiltRightrightTiltForwardsupTillBackdownumpleftern-dCoo-leftatanentrytofliang*it.Onlyfhkdialogifth亡optionkeyisdownQuitave4ndQuit1:您可以設(shè)置操縱桿、手柄、鍵盤和鼠標(biāo),然后通過簡單的腳本界面訪問所有設(shè)置。在腳本中,所有虛擬軸都

2、按照名稱訪問。在創(chuàng)建之時,所有工程都有以下默認(rèn)的輸入軸:水平線和垂直線映射至和方向鍵。2rr分別映射至、和鍵。3和映射至鼠標(biāo)移動增量。4和對應(yīng)窗口的移動。添加新的輸入軸如需添加新的虛擬軸,轉(zhuǎn)到編輯工程設(shè)置輸入菜單。也可在這里更改每個軸的設(shè)置。6Ins-peceo-r7述InputInpulYAxesEze17Manager)Q1HorizontalNameHorizofitalDescriptiveN且mDcscrjEitiveNegENegative3-uttonkftPQsiiivEBjttQnrightAltMegaliveAltPositiYEButted3火釧0.0D1Sensiti

3、vity3SnapInvertTypeKey:MoiiseEutron:AxisKdKiS1TcYNunnJoystic1iVerticalFirelFireZ-LJumpMa-useXMa-useY-Ma-useScro1711程1WindawShakXpWindawShakflYiHarizonta3VerticalKFirelKFire21-FireB.i-r-mULUIUUlII:每個軸可以對應(yīng)操縱桿、鼠標(biāo)的兩個按鈕或兩個鍵盤按鍵。名稱(Name)用來在腳本中檢查該軸的字符串名稱。描述名稱(Desc配置對話框輸入選項卡中顯示的正名稱,用于獨立構(gòu)建。描述負(fù)名稱(Des配置對話框輸入選項卡

4、中顯示的負(fù)名稱,用于獨立構(gòu)建。負(fù)按鈕(Negat用于在負(fù)方向移動軸。正按鈕(Posit用于在正方向移動軸。備選負(fù)按鈕(Neg用來在負(fù)方向移動軸的備選按鈕。備選正按鈕(Alt用來在正方向移動軸的備選按鈕。重力(Gravit在沒有按任何按鈕時,軸下降到的每秒單位速度。死亡(Dead)模擬死區(qū)的大小。所有在這個范圍內(nèi)的模擬設(shè)備值將映射為。靈敏度(Sensi軸向目標(biāo)值移動的每秒單位速度。該功能僅用于數(shù)碼設(shè)備。捕捉(Snap)如果啟用,按下相反方向的按鈕時,軸值將自動歸零。反向(Invert如果啟用,按下負(fù)按鈕將提供正值,反之亦然。類型(Type)控制此軸的輸入類型。軸(Axis)連接設(shè)備的軸將控制這個

5、軸。操縱桿(JoyNum)連接操縱桿將控制這個軸。這些設(shè)置可用來微調(diào)輸入的外觀和感覺。他們在編輯器均帶有工具提示。使用腳本中的輸入軸從像這樣的腳本,可以查詢當(dāng)前狀態(tài),如下所示:value=Input.GetA“xHisor(izonta”l);軸值在-1到1之間。中間位置為0。這是在操縱桿輸入和鍵盤輸入的情況下。但是,鼠標(biāo)增量和indowhak增量是指鼠標(biāo)或視窗在最后一幀移動的距離。這意味著,當(dāng)用戶快速移動鼠標(biāo)時,它可能大于1或小于1您可以創(chuàng)建多個名稱相同的軸。在獲得輸入軸時,絕對值最大的軸將被返回。這使得為一種以上輸入設(shè)備指定同一個軸名稱成為可能。例如,為鍵盤輸入創(chuàng)建一個軸,并且為操縱桿創(chuàng)建

6、另一根名稱相同的軸。如果用戶使用操縱桿,輸入將來自操縱桿,否則,輸入將來自鍵盤。有了這種方法,在編寫腳本時,您無需再考慮輸入的來源。文章出處【狗刨學(xué)習(xí)網(wǎng)】按鈕名稱要映射一個鍵到一個軸,您必須在檢視器中的正按鈕(ositieutto或負(fù)按鈕(egatieutto屬性中輸入按鍵名稱。按鍵名稱遵循以下慣例:1、標(biāo)準(zhǔn)鍵:“a”、”b”、”c”、2、數(shù)字鍵:”1、”2、”3、3、方向鍵:“上(up)”、“下(down)”、“左(left)”、“右(right)”4、小鍵盤鍵:”1”、”2”、”3”、”+”、”=”修改鍵:”rightshift”、leftshift”、”rightctrl”、leftct

7、rl”、”rightalt”、”leftalt”、”rightcmd”、”leftcmd”鼠標(biāo)按鈕:mouse0、mouse1、mouse2,操縱桿按鈕(從任意操縱桿):”joystickbutton0、joystickbutton1、”joystickbutton2、操縱桿按鈕(從指定操縱桿):”joystick1button0、”joystick1button1、”joystick2button0、9、特殊鍵:”backspace”、”tab”、”return”、”escape”、”space”、”delete”、”enter”、”insert”、”home”、”end”、”pageup”

8、、”pagedown”10、功能鍵:”f1、”f2、”f3、在腳本界面和檢視器中,用來識別按鍵的名稱是一樣的。value=Input.Get“Kae”y)(;移動輸入在i和ndroid平臺,輸入類別可以讓您訪問觸摸屏、加速度計及地理位置輸入。通過i鍵盤可提供移動設(shè)備鍵盤訪問。多點觸控屏幕ihone和iodouc設(shè)備最多可同時追蹤屏幕的五個觸點。您可以訪問nputtouche屬性數(shù)組,檢索最后一幀每個觸點的狀態(tài)。Android設(shè)備對于追蹤的觸點數(shù)量沒有統(tǒng)一限制。相反,它根據(jù)設(shè)備的而有所不同某些老舊設(shè)備可能是兩點,而最新的設(shè)備可以到五點。每個觸點都以一個nputou數(shù)據(jù)結(jié)構(gòu)表示:手指索引finge

9、r每次觸摸的唯一指數(shù)。d)位置positio觸摸在屏幕中的位置。n)增量位置最后一幀以來的屏幕位置變化。deltaPo增量時間(ea最后一次狀態(tài)變化以來的經(jīng)過的時間。me)點擊數(shù)(tapCot)he屏幕可以分辨用戶的快速觸摸。這個計數(shù)器可以讓您知道用戶在不移動手指的情況下觸摸屏幕的次數(shù)設(shè)備不會計算觸摸的次數(shù),因此,這個字段始終為。階段(phase)描述所謂的觸摸“階段(phase)”或狀態(tài)。它有助于確定用戶是否剛開始觸摸,是否用戶移動手指,是否用戶剛剛指。階段主要分為以下幾個部分:開始(ea手)指剛剛接觸屏幕。移動(Me手指在屏幕上移動。靜止(Stat手指y觸摸屏幕,但自最后一幀以來并未移動。

10、結(jié)束(Ee手指離開屏幕,是觸控的最后一個階段。取消系統(tǒng)已取消觸控跟蹤,例如,用戶將設(shè)備接觸面部或同時超過個觸摸點。這是觸控的最后一個階段。(Cancele面是一個用戶輕觸屏幕即射出光線的腳本示例:4.varparticle:GameObject;functionUpdate()for(vartouch:TouchinInput.touches)if(touch.phase=TouchPhase.Began)/Constructarayfromthecurrenttouchcoordinatesvarray=Camera.main.ScreenPointToRay(touch.position)

11、;if(Physics.Raycast(ray)/CreateaparticleifhitInstantiate(particle,transform.position,transform.rotation);鼠標(biāo)模擬除原生的觸摸支持以外,還提供鼠標(biāo)模擬。您可以使用標(biāo)準(zhǔn)輸入類中的鼠標(biāo)功能。加速度計在移動設(shè)備移動的過程中,內(nèi)置的加速度計報告在三維空間三個主要軸上的線性加速度改變。硬件將直接報告每根軸的加速度作為重力值。值為1.代0表所給出的軸的負(fù)載約為1而則代表。如果設(shè)備垂直放置(鍵位于下方)于身體正前方,那么軸在右邊是正值,軸在上方是正值,軸則在指向您本人的一方為正值??梢栽L問屬性,檢索加速度

12、計值。以下是使用加速度計移動對象的腳本示例:varspeed=10.0;functionUpdate()vardir:Vector3=Vector3.zero;/weassumethatthedeviceisheldparalleltotheground/andtheHomebuttonisintherighthand7./remapthedeviceaccelerationaxistogamecoordinates:/1)XYplaneofthedeviceismappedontoXZplane/2)rotated90degreesaroundYaxisdir.x=-Input.accele

13、ration.y;dir.z=Input.acceleration.x;13./clampaccelerationvectortotheunitsphereif(dir.sqrMagnitude1)dir.Normalize();17.18./Makeitmove10meterspersecondinsteadof10metersperframe.19.dir*=Time.deltaTime;20./Moveobjecttransform.Translate(dir*speed);低通過濾器加速度計讀數(shù)可能被顛簸和噪音影響。在信號中應(yīng)用低通濾波器有助于使其更平滑,并去除高頻噪音。以下腳本展示了

14、如何將低通濾波器應(yīng)用到加速度計讀數(shù):varAccelerometerUpdateInterval:float=1.0/60.0;varLowPassKernelWidthInSeconds:float=1.0;3.privatevarLowPassFilterFactor:float=AccelerometerUpdateInterval/LowPassKernelWidthInSeconds;/tweakableprivatevarlowPassValue:Vector3=Vector3.zero;functionStart()lowPassValue=Input.acceleration;

15、9.10.functionLowPassFilterAccelerometer():Vector3lowPassValue=Mathf.Lerp(lowPassValue,Input.acceleration,LowPassFilterFactor);returnlowPassValue;的值越大,過濾值在當(dāng)前輸入樣本中匯集的速度越慢反之亦然)。在獲取加速度計讀數(shù)時,我希望它能盡可能精確,我該怎么做?讀取變量并不等于采樣硬件。簡而言之,以的頻率采樣硬件,并將結(jié)果儲存到變量中。事實上,事情并非如此簡單一一在大量負(fù)荷的情況下,加速度計采樣不會以相同的時間間隔發(fā)生。因此,系統(tǒng)可能一幀報告兩個樣本,而下一幀又只有一個樣本。您可以訪問加速度計在每幀執(zhí)行的所有測量。以下代碼將舉例說明最

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論