天天看點

cocos2d-x 碰撞檢測

假設兩個 sprite, 每個的圖檔是縮放的, 而sprite 的上層節點也設定了縮放比例。 這個該怎麼友善的進行碰撞檢測?

取得螢幕的絕對坐标,和縮放後在螢幕上的size。 取得螢幕的絕對坐标好弄, 後面的計算size有些麻煩(因為有縮放系數),求教大家是怎麼辦的 ? 答案1: 其實縮放不縮放是一樣的啊,如果粗略一些就計算這2個sprite的中心點距離,如果大于等于二者高度或者寬度之和的一半,則為已碰撞,如果想精确些那麼要計算每個sprite的輪廓上每個角的坐标來比較! 答案2: contentsize 是實際的大小。

或者采取畫矩形相交判斷,

圓形半徑判斷。 答案3: CGRect projectileRect = CGRectMake(projectile.position.x ,        projectile.position.y ,    projectile.contentSize.width    ,        projectile.contentSize.height );

CGRect targetRect = CGRectMake(target.position.x ,        target.position.y ,    target.contentSize.width,        target.contentSize.height);                   

if (CGRectIntersectsRect(projectileRect, targetRect)) {

                                碰撞了.                       

}                                               

第一個代表rect是a物體在螢幕上占的空間.第二個rect是b物體占的空間.兩個空間相交則表示碰撞了.

繼續閱讀