回顧一下,AABB的作法是不管是甚麼形狀,都把物件包進矩形的碰撞框裡,但很明顯的這會導致碰撞的「不精確」,既使是矩形,只要旋轉,就會看到「異次元碰撞」。
SAT,分離軸原理的作法,從結果上,就是找出兩物體的分離軸,只要找到一條,就代表兩個物體是分開的。下面說明一下SAT的步驟。
// 例如: E = (100, 82),依據點積則 E.N = 0
// 會找到兩個向量,N = (-82, 100) or (82, -100)
仔細一下,昨天AABB的做法也是一種SAT,兩個矩形的邊界就是XY兩軸,畢竟兩個物體都「正正方方」的,然後所說的投影就是各自的X軸的min與max,Y軸的min與max。
實作過程中發現一些問題,在找頂點的時候就發生了問題,於是我直接拿昨天找到的網路文章看發甚麼問題,後來找到是選找的時候,我的參考點是世界座標的原點不是矩形的原點。
接著照上面的步驟,找出邊界,找出法向量,迭代每個法向量找出有沒有「不重疊」的正投影。
然後!出現了「異次元碰撞」,不管有沒有碰撞,都是顯示碰撞的狀態,加上頭有點昏(數學啊~我的天),時間已快到了,今天先休息吧。