SKNode位置不工作,总是默认为0,0

我已经开发了相当不错的SpriteKit游戏,添加了一些代码来添加一个新的SKSpriteNode到场景中(和我在代码中做了几十个其他地方一样,但是由于某种原因,这次只是忽略了位置我已经设置了节点,我已经尝试了显式.position = CGPointMake(x,y)并尝试[node setPosition:CGPointMake(x,y)]

既没有工作,节点也没有添加到场景中,但总是在0,0,无论我做了什么,都检查了x和y,以确保它们是有效的,并在场景的范围内,并尝试使用显式的浮点数等,不pipe我做什么,这个节点总是显示在0,0,这是毫无意义的。 我正在做的和我在其他几十个节点上玩游戏的过程一样,但是这个节点不会出现在任何地方,除了0,0,无论我做什么:

int width = 64; SKSpriteNode *node = [[SKSpriteNode alloc] initWithColor:[SKColor grayColor] size:CGSizeMake(width,25)]; node.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:node.size]; node.physicsBody.dynamic = NO; node.physicsBody.categoryBitMask=nodeCategory; node.name=@"node"; node.position = CGPointMake(200,250); //Have also tried [node setPosition:CGPointMake(200,250); [self addChild:node]; 

我在这里完全不知所措,我已经尝试在CGPointMake的input中join.0,以确保它们被作为浮点数处理。无论我如何处理这个节点,当它被添加到场景时,它总是默认为0,0的位置,我感到沮丧,我正在添加各种各样的节点没有事件,只是关于这个节点添加,这只是不工作,不知道什么是不同的或为什么。

我一直有这个问题。 我有一个SKSpriteNode的子类,我的大部分游戏中的节点都用作超类。 我已经添加了这个方法,当我遇到定位问题时,我使用这个方法:

 - (void)refreshPhysicsBodyAndSetPosition:(CGPoint)position { /* * Weird thing here: if I just set the position of these nodes, they * end up at position (0,0). However, if I remove the physics body, set * the position, and then re-add the physics body, the nodes are * placed correctly. */ SKPhysicsBody *tempPhysicsBody = self.physicsBody; self.physicsBody = nil; // Position and re-add physics body self.position = position; self.physicsBody = tempPhysicsBody; } 

显然,这不是一个真正的问题的答案,但这是一个解决方法,可能会帮助你们中的一些人。 我有一个苹果开发者论坛上打开的问题,你可以在这里查看:

https://devforums.apple.com/thread/222332

希望我很快听到。