iphone - Cocos2D中的坐标系

标签 iphone ios objective-c cocos2d-iphone sprite

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

我有以下对象:

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

为了检测碰撞,我只看一下 2 个 Sprite 边界框之间的距离:

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 的坐标和大小。但是坐标是错误的,它不能正确检测到碰撞。

我很确定我做错了什么,有人可以告诉我如何管理所有 Sprite 以具有相同的坐标系吗?我也尝试过使用 convertToWordSpace,但没有成功。

最佳答案

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

CGRectIntersectsRect(r1, r2);

关于iphone - Cocos2D中的坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102669/

相关文章:

iphone - 将核心动画与 CALayers 以外的对象一起使用

arrays - 无法在 swift 中将数组数据转换为 CLLocationCooperative2D 以在 map View 中绘制折线

iphone - 更新警报消息中的文本

iphone - 带有 nsdictionary 的 ios nsarrya 有 <null> 元素

ios - 从未调用过'didRegisterForRemoteNotificationsWithDeviceToken'

ios - PFUser/PFInstallaion saveEventually - 调用中参数 #1 缺少参数

ios - 如果我在使用 skobbler 导航时缩小,如何停止自动放大

objective-c - 如何在 objective-c 中用最后的数字按字母顺序对数组 Controller 进行排序?

iphone - UIImagePickerController 语言未更改

iphone - iPhone MIME 类型数据库在哪里?