我有一个cpBody,带有单个cpShape,漂浮在我的场景中与其他物体碰撞等。我怎样才能轻松地将这个身体留在一个地方,并像一个静止的障碍一样呆在一个地方,所以它不再移动,但仍然与其他身体碰撞。阻止身体移动。花栗鼠在iPhone上
我只是想停止身体移动时,用户点击它。这就是我问的原因。我不是Chipmunk的专家,但我认为它一定很容易。
我有一个cpBody,带有单个cpShape,漂浮在我的场景中与其他物体碰撞等。我怎样才能轻松地将这个身体留在一个地方,并像一个静止的障碍一样呆在一个地方,所以它不再移动,但仍然与其他身体碰撞。阻止身体移动。花栗鼠在iPhone上
我只是想停止身体移动时,用户点击它。这就是我问的原因。我不是Chipmunk的专家,但我认为它一定很容易。
您可以拨打cpBodySetMass
INFINITY,并强制对象睡cpBodySleep
。这是如何在内部实现一个静态对象(至少关于质量)。
编辑
我不知道你是否需要调用后这还是不cpBodySleep
,但我不认为它伤害打电话。
修改cpBody.h
并将#define CP_ALLOW_PRIVATE_ACCESS 1
放在开头。然后从cpBody*
,访问->node.idleTime
并将其设置为INFINITY。
EDIT 2
上述解决方案是一个可行的解决方案,但在实践SE长期不太好。最好定义一个使对象静态或动态的函数,以便在不禁用整个对象的私有属性的情况下进行调用。
您使用公共API执行此操作的方式是从空间中删除主体和形状。用与旧的动态主体相同的位置/旋转创建一个新的静态主体。使用cpShapeSetBody()将主体更改为新的静态主体,然后将形状读入空间。
Slembcke制作花栗鼠,所以希望这个解决方案应该可以工作。 :-) +1 –
我没有使用花栗鼠,但应该有一个选项指定静态身体的地方。 – nhahtdh
您可以添加静态主体,而不是将动态主体转换为静态主体。我不想删除动态主体,然后添加具有相同参数的静态主体。我只是问,也许有一种我不知道的快速方法。 – RaffAl