XNA-如何實現碰撞偵測?

摘要:如何實現碰撞偵測?

    碰撞偵測是遊戲中最常會遇到需要解決的問題之一,有許多解決的方法,可以使用XNA提供的BoundingBox或是BoundingSphere等函數來偵測兩物件是否有碰撞到,但是這種方法的缺點就是不能隨著圖片中的形狀去做碰撞偵測,只能大概的使用方形或是圓形等圖形去做偵測,這種碰撞偵測就相對地較不準確。

    而XNA有一個範例『Collision Series 2: 2D Per-Pixel Collision』就是在解決這個問題,它的原理是利用alpha值來做碰撞偵測,利用圖片屬性中的Color Key對圖片做遮罩的功能,運用遮罩後圖片的alpha值來做判斷,因為要為了顯示圖片部分區域,所以必須指定某個顏色的A值是255(全透明),所以在程式中只要當兩張圖片重合在一起的時候就開始做碰撞偵測,最主要就是在偵測兩張交集的圖片alpha值是不是不等於0,如果A值是不等於0的就代表兩張圖片有碰撞到了;如果A值不是不等於0的話就表示兩個圖片沒有碰撞到,往後會實際地看程式碼是如何寫的。