0

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

我有以下对象:

  1. 平铺地图图层中的所有精灵,包含所有障碍物;
  2. 一个精灵,它是另一个精灵的子精灵,它是 hello world 图层的子精灵(我正在使用的主图层,它返回场景)。这个精灵在地图中不断移动,它可能会与障碍物发生碰撞。

为了检测碰撞,我只看到了 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,但没有运气。

4

1 回答 1

2

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

CGRectIntersectsRect(r1, r2);
于 2013-02-27T01:41:54.237 回答