0

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

有人可以提供一个如何实现这一目标的例子吗?

我阅读了有关 cpShape 的 Chipmunk 文档http://code.google.com/p/chipmunk-physics/wiki/cpShape,它在底部的“您可以将多个碰撞形状附加到刚体”注释部分中的页面,但未提供示例。

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

4

2 回答 2

1

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

于 2011-07-14T06:55:38.587 回答
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 的碰撞类型。

于 2011-11-18T10:26:45.723 回答