假設兩個 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物體占的空間.兩個空間相交則表示碰撞了.