2013-02-27 46 views
0

我在檢測Cocos2D中的碰撞時遇到了問題,因爲我用來查看對象是否碰撞的座標總是錯誤的。Cocos2D中的座標系

我有以下對象:

  1. 所有從平鋪地圖圖層精靈,包含所有的障礙;
  2. 作爲hello世界圖層(我正在使用的主圖層,它返回場景)的子圖像的另一個精靈的子圖形。這些精靈在地圖上不斷移動,並可能與障礙物相撞。

爲了檢測碰撞我只是看一下2精靈的邊界框之間的距離:

inline BOOL collision(CGRect r1, CGRect r2) 
{ 
    CGPoint c1= RectCenter(r1); 
    CGPoint c2= RectCenter(r2); 
    BOOL result= (fabs(c1.x-c2.x)<MAX(r1.size.width/2.0,r2.size.width/2.0)) && (fabs(c1.y-c2.y)<MAX(r1.size.height/2.0,r2.size.height/2.0)); 
    return result; 
} 

我用boundingBox的屬性來獲取的座標和每一個角色的大小。但座標是錯誤的,它不能正確檢測碰撞。

我很確定我做錯了什麼,有人能告訴我如何管理所有的精靈擁有相同的座標系嗎?我也嘗試convertToWordSpace,但沒有運氣。

+1

首先,爲什麼不使用'CGRectIntersectsRect'? – Till 2013-02-27 01:43:29

+0

我不知道它存在,謝謝。 – 2013-02-27 09:32:12

回答

2

您可以看到破除碰撞法有利於內建函數如果兩個CGRects相交:

CGRectIntersectsRect(r1, r2);