彈幕遊戲的碰撞檢測一般是怎麼實現的?

時間 2021-05-30 23:23:04

1樓:施展

上個月正好在公司花兩天做了個彈幕遊戲的demo。彈幕碰撞主要是將敵人和自己的子彈區分開,分別存入兩個網格物件中。網格物件持有乙個二維陣列(當然一維陣列也可以),陣列的長度為(螢幕長度/單個網格的長度 * 螢幕高度/單個網格的高度)。

效果如下圖:

陣列用於存放處在該網格中的所有子彈。假設螢幕為480*800,我們選定網格為80*80,則共有480/80*800/80=60個網格,我們指定有斜線的網格對應陣列[0][0]。接下來根據子彈的位置將其加入到陣列中。

公式如下:

row = math.floor(子彈Y軸位置/網格高度)col = math.floor(子彈X軸位置/網格長度)比如子彈位置為(100,200),則將其加入到陣列中的[1][2]中,在子彈位置發生改變同時更新其在陣列中的位置。

需要與網格物件中的子彈進行檢測的飛機以同樣的方法計算出(col,row),則只需與陣列[col][row]中的子彈進行碰撞檢測即可。

不知道有沒有說清楚……

2樓:

其實彈幕遊戲沒那麼麻煩,乙個乙個比就好了。

敵人的子彈只要和player算一次,而player發出的子彈一點都不多,和每個敵人算也沒關係......

然後一般碰撞用矩形或者圓作為hitbox即可......

3樓:

彈幕遊戲永遠是新手學習遊戲開發第乙個做的遊戲裡最合適的一種,所用的碰撞也是最簡單的。基本上用矩形檢測可以解決全部碰撞測試。

子彈的碰撞體乙個矩形解決問題,機體和複雜一些的形狀用組合矩形解決問題。矩形萬歲。

3D遊戲的碰撞檢測是如何實現的?

TC130 TC130 遊戲物理引擎 二 碰撞檢測之Broad Phase TC130 遊戲物理引擎 三 碰撞檢測之Narrow Phase FXCarl 你的方法其實並沒有什麼問題,碰撞檢測就是圖元相交測試。三角形和三角形的交叉是這樣的 選擇乙個三角麵片 A 取出三個邊 和另外乙個三角形 B 所在...

口誤一般是怎麼造成的?

Helen 有很多種原因,但有一種口誤非常得莫名其妙。打個比方,心裡明明想的不是A,說出口卻說成了A.也不是潛意識什麼的,因為明明白白知道是什麼,心裡也沒往口誤的那個方面想,說出口的話卻變成了口誤的表達內容。舉個例子,心裡想的是玻璃,說出來的卻是塑料,兩個根本沒有關聯的事物。壓根沒往塑料那方面想,這...

外遇一般是怎麼開始的?

Eric.H 這裡的外遇指的是 兩個人相互的外遇,而不是單方面某人對伴侶中的一方產生情愫。想了一下 叫做 蒼蠅沒法叮無縫的蛋。這個縫並不是說你做的不對,你做的不好。而是那種感覺在有著伴侶關係之名的兩個人之間卻沒有存在 首先如果有人是被另一方外遇,請不要立即否定並帶入自己。而應該審視,是是不是兩個人之...