SKSPriteNode的位置无缘无故变成0,0

我在didBeginContact位置的didBeginContact方法中创build了一个SKSpriteNode

 CommonBox *boxTwo = [[CommonBox alloc] initWithTexture:[self.mainAtlas textureNamed:@"box07"]]; boxTwo.name = @"regularBox"; boxTwo.position = contact.contactPoint; [self addChild:boxTwo]; 

这里的位置是正确的。 然后更新方法被调用,并且在更新方法开始时,在任何代码被执行之前,方框的位置被神奇地改变为0,0。 这是为什么? 这两个事件之间没有执行其他代码。 这真让我抓狂。 我试图从这个对象中删除所有的碰撞和接触位掩码,但它无论如何改变为零。 对象是合法的等等。

编辑:如果我从该节点删除物理机构,我会得到所需的位置。 但是如果有物理体,我该如何设置节点的位置呢?

我发现了我的错误 – 你必须在设置节点位置后创build物理体。 在物理位置定位之后设置位置不会做任何事情。