【问题标题】:Coordinate system in Cocos2DCocos2D中的坐标系
【发布时间】:2013-02-27 01:32:26
【问题描述】:

我在 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,但没有成功。

【问题讨论】:

  • 首先,为什么不使用CGRectIntersectsRect
  • 我不知道它存在,谢谢。

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


【解决方案1】:

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

CGRectIntersectsRect(r1, r2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多