SpriteKit:无法在联系回调中更改节点位置

sda*_*bet 7 sprite-kit

我有一个动态物理体的节点.我想让它静止,并在与另一个身体接触时改变它的位置.

我设法使用这个问题中提供的解决方案使body保持静态:Sprite Kit失败断言:(typeA == b2_dynamicBody || typeB == b2_dynamicBody)

但是,如果我position在其中一个联系回调方法中更改节点的属性(例如didBeginContact),则不考虑新位置.

我怎么能实现这一目标?

JKa*_*lio 6

我相信这是SpriteKit中的一个错误.(我能用SpriteKit 7.1重现这个问题).

这是一个快速的解决方法:

- (void) didBeginContact:(SKPhysicsContact *)contact
{
     contact.bodyB.node.position = CGPointMake(newX, newY);
     contact.bodyB.node.physicsBody = contact.bodyB.node.physicsBody; // <-- Add this line
}
Run Code Online (Sandbox Code Playgroud)