我无法通过更改来更改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/