判斷前方障礙、子彈擊中敵機等,本質皆為兩物體碰撞判斷。複雜形狀可分解為基本形狀組合,分別檢測。
假設矩形 1:左上 (x1,y1)、寬 w1、高 h1;矩形 2:(x2,y2)、w2、h2。數學條件:
X向:| (x1 + w1/2) - (x2 + w2/2) | <= (w1 + w2) / 2
Y向:| (y1 + h1/2) - (y2 + h2/2) | <= (h1 + h2) / 2
兩條件同時滿足即重疊。代碼直接轉換條件判斷。屬粗略檢測,因實際物體常非標準矩形。
假設圓 1:左上 (x1,y1)、半徑 r1;圓 2:(x2,y2)、r2。條件:
(x1 - x2)^2 + (y1 - y2)^2 < (r1 + r2)^2
MIDP 1.0 無浮點且開方慢,雙邊平方消去開根號,純整數運算極快。代碼直接實現上式。圓形碰撞最簡單精確。
實際開發遇到的碰撞問題遠較此複雜,需其他形式檢測(如矩形-圓形、多邊形、像素級),建議深入研習。