iT邦幫忙

2021 iThome 鐵人賽

0
自我挑戰組

翻車機率極高的2D平台遊戲(2D Platformer)製作系列 第 31

[Day31] 再訪碰撞偵測與解析(三) - 解析很複雜!

今日目標

  • 實作AABB的碰撞解析

意外複雜!

今天嘗試實作昨天YT教學影片的內容,然後在看看怎麼樣把功能改道我的們2D Platformer裡面,主要是做這兩個:

  • Ray vs Rect (射線 與 矩形 的碰撞)
  • Dynmic Rect vs Rect (動態 矩形 與 矩形 的碰撞)

Ray vs Rect

今天只有測試看看這個方法,動態矩形與矩形的碰撞也是射線與矩形的碰撞方法的延伸。

看過這個片段(15:51)可以了解射線怎麼找到指定在矩形上的碰撞點,同時還可以知道碰撞點與矩形平面的之間法向量。這個資訊很重要,像是可以從這邊知道,對於該平面的力的反射,甚至還可以用在像是2D光線之類的(我猜)。

MISSION FAILED!

事實上我依樣畫葫蘆了一遍,但發現到有些問題

  1. 會在完全沒碰到的地方顯示發生碰撞
  2. 法向量的標示有些正確,有些是錯誤的

動態矩形與(靜態)矩形的碰撞

動態矩形可以理解為在移動的角色,靜態矩形就是作為場景的每一個方塊。

如昨天所述,在角色與場景的障礙偵測到碰撞的時候,可能已經是角色已經卡在障礙一半或是已經直穿過的情況了,而影片中給出的解法是在靜態的物體上,在往外延伸一層碰撞框,然後大小是角色大小的1/2。這樣就可以提前知道有沒有撞上了。

其實這就延伸到一個問題了,如果是兩個動態的物體就不能這種作法。

今天的也暫時不上傳,都還在測試中,可能要到真的「矩形與矩形的碰撞」完成,才會更新了


上一篇
[Day 30] 再訪碰撞偵測與解析(二) - 初步碰撞解析
下一篇
[Day 32] 再訪碰撞偵測與解析(四) - Debug Ray vs Rect!
系列文
翻車機率極高的2D平台遊戲(2D Platformer)製作33

尚未有邦友留言

立即登入留言