Cocos2D中的坐标系

时间:2013-02-27 01:32:27

标签: iphone ios objective-c cocos2d-iphone sprite

我在检测Cocos2D中的碰撞时遇到问题,因为我用来查看对象是否碰撞的坐标总是错误的。

我有以下对象:

  1. 来自平铺地图图层的所有精灵,包含所有障碍物;
  2. 一个sprite,它是另一个sprite的子节点,它是hello world layer(我正在使用的主层,返回场景)的子节点。这个精灵在地图中不断移动,可能会与障碍物发生碰撞。
  3. 要检测碰撞,我只看一下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属性来获取每个sprite的坐标和大小。但坐标错误,并且没有正确检测到碰撞。

    我很确定我做错了什么,有人能告诉我如何管理所有精灵以获得相同的坐标系?我也试过convertToWordSpace,但没有运气。

1 个答案:

答案 0 :(得分:2)

您可以取消使用内置函数的碰撞方法,以查看两个CGRect是否相交:

CGRectIntersectsRect(r1, r2);