我无法通过更改来更改SKSpriteNode的位置

self.position = newPosition;

如果它具有PhysicalBody,它将不再起作用。

我得到的一种解决方法是:
    self.myStar.physicsBody = nil;

    [self.myStar changePosition];

    self.myStar.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.myStar.size.width/2];

或者
    [self runAction:[SKAction moveTo:newPosiion duration:0.0]];

但是#2并不顺利。它需要在不移动 Action 的情况下弹出到另一个位置。

最佳答案

我有同样的问题。显然,一旦Sprite节点具有PhysicsBody,就无法显式设置其位置。我通过暂时删除 Sprite 节点的PhysicsBody解决了该问题。

CGFloat yPosition = 400.f;
SKPhysicsBody* goldfishPhysicsBody = _goldfish.physicsBody;
_goldfish.physicsBody = nil;
_goldfish.position = CGPointMake(_goldfish.position.x, yPosition);
_goldfish.physicsBody = goldfishPhysicsBody;

关于ios - 更改具有PhysicalBody的SKSpriteNode的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20937932/

10-11 14:50