精灵套件-将物理body对象静止在正确的碰撞接触点



我正在尝试制作一款关于球的游戏,并在IOS7中使用带有物理体的sprite工具包。我的问题是在接触/碰撞时让物体静止。这是我在didBeginContact:中的代码

[contact.bodyA setVelocity:CGVectorMake(0, 0)];
[contact.bodyB setVelocity:CGVectorMake(0, 0)];
contact.bodyA.resting = YES;
contact.bodyB.resting = YES;

实际上contact.bodyA已经在休息了,但我只是将其设置为确保两个对象都设置为休息。问题是,即使我设置了contact.bodyA(or B).resting = YES,球也不会相互接触。

这就是我想要的:

https://i.stack.imgur.com/p8JTk.png

有时会发生这种情况:

https://i.stack.imgur.com/LWORO.png

正如你在第二张照片中看到的,蓝色的球和其他球有点远。有没有其他方法可以一直在接触点用磁铁吸引球?

这可能是物理体的一个潜在问题。我假设您使用的是[SKPhysicsBody bodyWithCircleOfRadius:spriteWidth/2]。你确定你的精灵图像是正确的大小,并且与你给物理体构造函数提供的半径相匹配吗?

也许您可以将对象的位置存储在属性prevPosition中,当检测到碰撞时,将精灵节点的位置返回到prevPosition,并将主体设置为resting
`

最新更新