遊戲開發基礎 方向鍵的組合,八方向實現

2022-01-22 02:21:28 字數 775 閱讀 6041

**自:silvery night的方向鍵的組合,八方向實現

在遊戲中,有一種情況是斜向移動,就是同時按下兩個方向,形成斜線操作,在win32gdi開發中,可以通過在邏輯迴圈裡加入鍵盤狀態判斷取得多個鍵進行操作,但是在silverlight中鍵盤的事件是單個的,不能取得多個鍵盤的狀態,園友提出乙個問題,就是我的flyer小遊戲只能上下左右控制,而不能斜向行動,今天我們來解決這個問題,實現八個方向的正確行為動作。

針對這個解決方案初步的想法,對於鍵盤的輸入來說,可以使用乙個佇列進行鍵盤狀態儲存,比如使用乙個list儲存key的狀態,然後在keyup的時候釋放掉沒有用的key,判斷一下按下的順序就可能得到所有方向的狀態,但是這有幾個問題,在按下多鍵都會出重複鍵問題,而按下的順序未必準確,那麼出佇列未必一定是準確的釋放,比如我可以同時按下abc,而釋放順序是bca,得到的結果就不是乙個準確的list,這種方法看起來可行,但是實際過程中卻不一定是這樣的情況,所以問題沒有解決。

這個實現可能有很多解決方案,在這裡我們用乙個直觀的解決方案來解決,使用狀態表來完成,可以分析出來乙個按鍵行為和行動方向行為的共性,他們是乙個3x3的影象:

從上面的圖形可以看出來,是乙個3x3的二維陣列,看看和什麼很像呢——遊戲手柄,我們可以用乙個二維陣列來儲存所有的狀態,將按下的數字組合查表得到對應的狀態。

八方向搖桿 unity

對於八方向的搖桿的想法如下 以xy平面座標系,每45 為乙個方向。public void joystickdirection float joypositionx,float joypositiony else if currentangle 67.5f currentangle 22.5f 45 ...

迷宮尋路(八方向)

使用動態陣列儲存迷宮和迷宮的路徑,1表示牆0表示可走。感覺寫法有點 include using namespace std int stepcomplete void cin maze int a,int row,int column void print int maze path,int h,i...

八方向迷宮尋路的全部路徑

八方向迷宮,可尋出全部路徑 最外層需要全部放1 寫的比較粗糙,日後改進 include using namespace std int stepcomplete int ans 0 void cin maze int a,int row,int column void print int maze ...