SKSPriteNode位置无缘无故地变为0,0

Dvo*_*ole 6 ios sprite-kit

我创建了一个带有联系位置的SKSpriteNodein didBeginContact方法:

CommonBox *boxTwo = [[CommonBox alloc] initWithTexture:[self.mainAtlas textureNamed:@"box07"]];
boxTwo.name = @"regularBox";
boxTwo.position = contact.contactPoint;
[self addChild:boxTwo];
Run Code Online (Sandbox Code Playgroud)

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

编辑:如果我从该节点删除物理体,我将获得所需的位置.但是如果它有物理体,我如何设置我的节点位置?

Dvo*_*ole 7

我发现了我的错误 - 你必须在设置节点位置后创建物理体.在物理体位置后设置位置不做任何事情.

  • 谢谢,我希望我早些发现.在我的情况下,它似乎不一致.有时我的子类SKSpriteNodes可以在物理实体创建后给出位置,而有些则不是.目前我看不出那些有效的和那些有用的有什么不同,并且会将这个作为一个可能的框架错误. (2认同)