弹幕射击游戏中旋转矩形碰撞检测的算法描述
分離軸法是根據(jù)兩個多邊形的幾何中心在任意矢量方向的法線上的投影存在交叉的條件來做出的方法[32]。換而言之,如果可以找出這樣一個方向,將兩個多邊形投影在此方向的法線上的投影不交叉,則說明碰撞未發(fā)生,如圖5-3所示。
?
圖中A、B為兩個矩形局域,矢量C為隨意的一個方向,D為C的法線,A+和B+分別是A和B在法線D上的投影,可見A+和B+并未相交,說明存在這樣的一個矢量,使得矩形區(qū)域A和B在其法線上的投影不想交。在實際運用中,我們需要判斷所有的多邊形邊的方向,來判斷是否存在一個這樣的邊,如果不存在則說明碰撞發(fā)生,如圖5-4所示。
圖中A和B是兩個三角形,C、D和E分別是方向與三角形三條邊平行的三條直線,C+、D+和E+分別是它們的法線。A1和B1是分別是三角形A和B在法線C+上的投影,A2和B2分別是三角形A和B在法線D+上的投影,A3和B3分別是三角形A和B在法線E+上的投影。可見三角形A和B在三角形的三條邊平行的矢量的法線上的投影都不滿足不發(fā)生碰撞時的條件,所以由此斷定,A和B發(fā)生了碰撞。對于這種方法可以推廣到任意的凸多邊形[20]。
在實際運算過程中,為子精靈配置長寬值,即矩形區(qū)域的面積大小和矩形中心點,為了加快彈幕射擊游戲中碰撞檢測的效率,使得游戲體驗性更強,我們可以先判斷兩個矩形區(qū)域的外接圓是否存在交叉,如果沒有則兩個矩形區(qū)域是肯定沒有交叉的。
圖中為了再次方便計算兩個投影是否交叉可以計算兩個適量在X軸上的投影,如果適量垂直X軸,則計算在Y軸上的投影,即可判斷,對于矩形來說,法線只有兩個方向,計算起來比較方便。
?
總結
以上是生活随笔為你收集整理的弹幕射击游戏中旋转矩形碰撞检测的算法描述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TV的端口
- 下一篇: 畅想——基于区块链的经济体系