我使用iOS + Cocos2d + Chipmunk创建了单人游戏,我正在寻找一种解决方案,演示如何将多个碰撞形状附加到单个刚体上。我有一个具有不规则形状(汽车)的目标,我需要检测碰撞。玩家从侧视图看到目标(汽车),而其他物体可能从多个方向撞击目标,而不仅仅是从前方或后方。形状是这样的,我无法使用单个cpPolyShape并实现逼真的碰撞效果。两个cpPolyShapes(矩形)堆叠在一起,底部矩形更大应该可以解决问题。
有人可以举例说明如何实现这一目标吗?
我阅读了有关cpShape {4}的Chipmunk文档,并在备注部分的页面底部指出'您可以将多个碰撞形状附加到刚体',但没有提供示例
我目前有一个有效的功能项目,我正在尝试进行一些最终调整,以改善游戏玩法。
答案 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的碰撞类型。