我正在尝试制作一款关于球的游戏,并在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
`