Cocos2D 的 Chipmunk,碰撞检测 - 最佳实践?

发布于 2024-11-04 13:54:16 字数 369 浏览 1 评论 0原文

我正在使用花栗鼠物理学,并且想要进行碰撞检测以找出 2 个 cpBodies 何时发生碰撞。我有一些问题;

  • 你能给我一个使用 cpCollPairFunc 或 cpSpaceAddCollisionHandler ?
  • 我已经看到了矩形交叉点周围;对于多边形来说这可能吗?
  • 我应该在上面使用另一个库(SpaceManager 或其他库)吗?

谢谢你!

F。

I'm using Chipmunk physics and want to do collision detection to find out when 2 cpBodies collide. I've got some questions;

  • Could you give me an example of using cpCollPairFunc or cpSpaceAddCollisionHandler ?
  • I've seen around the rectangle intersection; is that possible for polygons?
  • Should I use another library (SpaceManager or whatever) on top?

Thank you!

F.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡看悲欢离合 2024-11-11 13:54:16

您需要添加以下行

形状->collision_type = kCollisionTypeParticle;
cpSpaceAddCollisionHandler(space_, kCollisionTypeParticle, kCollisionTypeParticle, collisonDetect, NULL, NULL, NULL, self);

kCollisionTypeParticle 是枚举,如果有两种不同类型的粒子,您可以定义它。

typedef 枚举 {
     kCollisionTypeParticle,
     kCollisionTypeParticleNew
} 碰撞类型;

这里的 collisonDetect 是我们需要注册的方法:

cpBool collisonDetect(cpArbiter *arb, struct cpSpace *space, void *data)
{
     *图层=(*)数据;
     [层 collisonDetect:arb];
     返回 cpTrue;
}

在这里您将处理其余的代码

-(void)collisonDetect:(cpArbiter*)arb
{

     NSLog(@"检测到碰撞");

}

You need to add following lines

shape->collision_type = kCollisionTypeParticle;
cpSpaceAddCollisionHandler(space_, kCollisionTypeParticle, kCollisionTypeParticle, collisonDetect, NULL, NULL, NULL, self);

kCollisionTypeParticle is enum you can define it if there are two types of different particles.

typedef enum {
     kCollisionTypeParticle,
     kCollisionTypeParticleNew
} CollisionType;

Here collisonDetect is a method we need to register as:

cpBool collisonDetect(cpArbiter *arb, struct cpSpace *space, void *data)
{
      *layer = ( *)data;
     [layer collisonDetect:arb];
     return cpTrue;
}

Now here here you will handle rest of the code

-(void)collisonDetect:(cpArbiter*)arb
{

     NSLog(@"COLLISION DETECTED");

}

伴我老 2024-11-11 13:54:16

乔感谢您的回复; Corona 不是免费软件,不是吗?

最后的救世主是:
http://www.cocos2d-iphone.org/forum/topic/9425以及 cpSpaceAddCollisionHandler 方法。

Joe thank you for your response; Corona is not freeware isn't it.

The saviour at the end was:
http://www.cocos2d-iphone.org/forum/topic/9425 and the cpSpaceAddCollisionHandler method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文