摘要:自從買了手柄后一直想試試給自己寫的小游戲增加手柄支持。表示該對象所表示的手柄是否還保持連接。。連接事件瀏覽器提供了兩個手柄相關的事件。。完筆者給自己的貪食蛇小游戲增加了手柄搖桿控制蛇頭方向功能之前筆者還寫過俄羅斯方塊之類的,代碼找不到了
自從買了 Switch 手柄后一直想試試給自己寫的小游戲增加手柄支持。今天終于抽出時間搞了一把。以下是筆記 ;)
navigator.getGamepadsHTML5 中獲取游戲手柄的 API 是 navigator.getGamepads()。navigator.getGamepads 會返回一個可能包含 null 的數組。標準規定,對于同一個游戲手柄會在同一個下標中返回,不同的手柄必須不能使用其他手柄用過的下標——即便前者已經中斷連接。如果沒有檢測到任何游戲手柄,實測在 Firefox 中會返回一個空數組,而在 Chrome、Safari 中會返回 [null, null, null, null]。
當瀏覽器檢測到手柄后,navigator.getGamepads 就會返回包含該手柄對象的數組,每一個手柄對象都是 Gamepad 類型
實測筆者的 NS Pro 手柄在 Chrome、Safari 瀏覽器上有兼容性問題(不能識別左搖桿),所以下面測試均以 Firefox 為準(Edge 也正常)。同事表示他的 PS4 手柄沒有問題。
Gamepad 類Gamepad 類包含重要的屬性,這里只介紹最重要的幾個:
id。字符串,包含了手柄驅動的名稱信息。比如筆者的 NS Pro 返回的是 57e-2009-Pro Controller,可以用此字符串識別用戶的手柄提供默認的按鍵映射。
connected。表示該 Gamepad 對象所表示的手柄是否還保持連接。
timestamp。手柄對象的最后更新時間。實測筆者雖然沒有動手柄,這個值仍然在不斷增長(可能是搖桿的數值在微小變化的緣故),用處不是很大。
mapping。表示瀏覽器是否可以識別手柄的布局。當前瀏覽器只能識別 類似 PS4 手柄的標準布局。如果能識別,返回 standard,否則返回空字符串(筆者的 NS Pro 識別不了)。
axes。這個值表示手柄的搖桿的軸(一個搖桿有X、Y兩個軸)。其所有值都在 -1~1 之間。HTML使用向右、向下的坐標系,所以正值表示右或上,負值表示左或下。標準規定,同一個搖桿的X、Y方向值必須相鄰,且先X后Y。標準同時建議,如果有多個搖桿同時存在,主搖桿應該排在前面。所以如果有有左右兩個搖桿,axes 返回的數組值應該表示:[左搖桿的X軸偏向, 左搖桿的Y軸偏向, 右搖桿的X軸偏向, 右搖桿的Y軸偏向]
buttons。這個值是一個 GamepadButton 對象數組。標準建議數組的順序應該按照主要按鍵優先排列。實測對于我的 NS Pro 手柄來說順序是 [B, A, Y, X, L, R ...],而方向鍵排在最后四個。建議實際應用中給用戶提供專門的界面映射按鍵。
GamepadButton 類每一個 GamepadButton 實例表示手柄上的一個按鍵(包括方向鍵),它包含三個屬性(MDN 上只寫了兩個,實際按照標準返回了全部三個):
pressed。布爾值,表示當前按鍵是否被按下。
value。表示按鍵的深度(完全按下還是按到一半),值為 0~1 之間。大多數按鍵不支持壓力感應,會直接返回0或1
touched。如果手柄支持觸摸,該值可表示當前按鍵被觸摸但是沒有按下的狀態。如果不支持觸摸,該值和 pressed 一致。
連接事件瀏覽器提供了兩個手柄相關的事件。
gamepadconnected。當瀏覽器檢測到手柄連接時觸發。回調函數的事件參數中包含 gamepad 屬性,用戶獲得新連接的手柄對象
gampaddisconnected。當瀏覽器檢測到手柄失去連接時觸發。
可以看到手柄沒有類似鍵盤鼠標那樣的 keydown、keyup 等事件,如需獲取手柄的按鍵狀態,需要在 raf 循環中使用 navigator.getGamepads 實時獲取。
完筆者給自己的貪食蛇小游戲增加了手柄搖桿控制蛇頭方向功能:https://github.com/CarterLi/S...
之前筆者還寫過俄羅斯方塊之類的,代碼找不到了/(ㄒoㄒ)/~~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94528.html
摘要:買什么游戲主機好距離上篇游戲主機選購完全指南已經有了快兩年的時間,在這個不長不短的時間里,游戲主機市場也出現了一些十分有趣的變化,索尼和微軟齊頭并進,先后發布了和,讓成了去年游戲領域的關鍵詞,完成了半個世代的更迭。想組裝一臺電腦,用迷你主機好還是用大主機好?一定先玩明確自己的使用要求。而不是先考慮哪種電腦好。迷你電腦優點太多了,小巧美觀不占地方,日常應用足夠,高清電影一般游戲辦公商務都可滿足...
摘要:買什么游戲主機好距離上篇游戲主機選購完全指南已經有了快兩年的時間,在這個不長不短的時間里,游戲主機市場也出現了一些十分有趣的變化,索尼和微軟齊頭并進,先后發布了和,讓成了去年游戲領域的關鍵詞,完成了半個世代的更迭。買什么游戲主機好?距離上篇 《游戲主機選購完全指南》 已經有了快兩年的時間,在這個不長不短的時間里,游戲主機市場也出現了一些十分有趣的變化,索尼和微軟齊頭并進,先后發布了 PS4 ...
摘要:請問云服務器可以托管掛機游戲嗎如果是想在云主機上玩游戲的話,由于云主機沒有網卡,所以無法加載大型游戲,不過可以玩一些網頁游戲。請問云服務器可以托管掛機游戲嗎?如果是想在云主機上玩游戲的話,由于云主機沒有網卡,所以無法加載大型游戲,不過可以玩一些網頁游戲。如果主機提供商的物理機支持GPU透傳功能,將物理機GPU透傳到云主機上,這樣云主機就有了物理機的GPU功能,有了3D渲染和高清解碼的功能,玩...
摘要:交互事件交互根據自由度可分為和,顯然,所有的頭顯都應支持方向的追蹤。交互事件除了,現在大部分還搭配,用戶通過手持手柄可以與虛擬場景進行交互。 showImg(https://segmentfault.com/img/remote/1460000011813767?w=880&h=471); 前兩期主要介紹了開發WebVR應用的基本套路,不過開發出來的場景還只是可遠觀而不可褻玩,缺乏交互...
閱讀 2782·2021-10-11 11:08
閱讀 1498·2021-09-30 09:48
閱讀 1059·2021-09-22 15:29
閱讀 1044·2019-08-30 15:54
閱讀 986·2019-08-29 15:19
閱讀 537·2019-08-29 13:12
閱讀 3172·2019-08-26 13:53
閱讀 972·2019-08-26 13:28