Sprite Kit - 在正确的碰撞接触点处放置物理体对象

时间:2013-12-11 01:47:21

标签: objective-c ios7 collision-detection sprite-kit skphysicsbody

我正在尝试制作一个关于球的游戏,并使用sprite工具包和IOS 7的物理体。我的问题是在接触/碰撞时休息物体。这是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,球也不会相互接触。

这就是我想要的:

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

有时会发生这种情况:

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

正如你在第二张照片中看到的那样,蓝色球与其他球有点远。是否还有其他方法可以在接触点磁力球?

1 个答案:

答案 0 :(得分:0)

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

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