來源: http://kyovbdx.myweb.hinet.net/tutorials/ProgramShoot/old/ch2.htm


前面提到每一個Sprite都是由矩形所構成的,所以碰撞的判定其實就只是去判斷矩形間是否有所交會.

Function HitCheck(A As SpriteUnit, B As SpriteUnit) As Boolean

  If A.x + A.W >= B.x And A.x <= B.x + B.W And A.y + A.H >= B.y And A.y <= B.y + B.H Then
     HitCheck = True
  Else
     HitCheck = False
  End If

End Function

HitCheck函式傳入兩個Sprite--A及B然後加以判定.

  1. A.x+A.W >= B.x : Sprite-A 的右邊界大於等於 Sprite-B 的左邊界。
  2. A.x <= B.x+B.W : Sprite-A 的左邊界小於等於 Sprite-B 的右邊界。
  3. A.y+A.H >= B.y : Sprite-A 的下邊界大於等於 Sprite-B 的上邊界。
  4. A.y <= B.y+B.H : Sprite-A 的上邊界小於等於 Sprite-B 的下邊界。
  5. 若滿足以上條件則發生碰撞.

台南小新 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 阿遙
  • 感謝 板主的知識分享!
    苦惱的很久的問題終於解決了@@
    不過判斷式的最後一個是不是打錯了?
    A.x <= B.x + B.W好像跟上第二重複了^^"
  • 感謝指教,已經修改好了。

    台南小新 於 2009/04/23 22:50 回覆