将多个碰撞形状附加到单个刚体

时间:2011-07-13 19:33:04

标签: ios cocos2d-iphone chipmunk

我使用iOS + Cocos2d + Chipmunk创建了单人游戏,我正在寻找一种解决方案,演示如何将多个碰撞形状附加到单个刚体上。我有一个具有不规则形状(汽车)的目标,我需要检测碰撞。玩家从侧视图看到目标(汽车),而其他物体可能从多个方向撞击目标,而不仅仅是从前方或后方。形状是这样的,我无法使用单个cpPolyShape并实现逼真的碰撞效果。两个cpPolyShapes(矩形)堆叠在一起,底部矩形更大应该可以解决问题。

有人可以举例说明如何实现这一目标吗?

我阅读了有关cpShape {4}的Chipmunk文档,并在备注部分的页面底部指出'您可以将多个碰撞形状附加到刚体',但没有提供示例

我目前有一个有效的功能项目,我正在尝试进行一些最终调整,以改善游戏玩法。

2 个答案:

答案 0 :(得分:1)

当你调用cp * ShapeNew()时,第一个参数是将它附加到的主体。简单地制作多个共享同一个身体的形状。没有诀窍。

答案 1 :(得分:0)

您可以添加方法

在.h文件中添加原型

static int FunctionName (cpArbiter *arb, cpSpace *space, void *unused);

现在在.m文件中添加代码为

    cpSpaceAddCollisionHandler(<space name>, <cpCollisionType of  body a >, <cpCollisionType of body b>, <cpCollisionBeginFunc name>, <cpCollisionPreSolveFunc preSolve>, <cpCollisionPostSolveFunc postSolve>, <cpCollisionSeparateFunc separate>, <void *data>);

static int FunctionName(cpArbiter *arb, cpSpace *space, void *unused)
{
    cpShape *a, *b; cpArbiterGetShapes(arb, &a, &b);    
    printf("\n Collision Detected");    
    return 1;   
}

注意: - 不要忘记给出两个Body的碰撞类型。