Spe*_*pgh 6 position ios sprite-kit sknode
我已经开发了相当完善的SpriteKit游戏,添加了一些代码来向场景中添加一个新的SKSpriteNode(与我在代码中的其他几十个地方相同,但由于某种原因,这次它只是忽略了我已经为节点设置了位置,我通过显式.position = CGPointMake(x,y)尝试了它并尝试了[node setPosition:CGPointMake(x,y)]
既不工作......节点确实被添加到场景中,但总是在0,0,无论我做什么,都检查了x和y以确保它们是有效的并且在场景的范围内,并且尝试过使用显式浮点数等,无论我做什么,这个节点总是显示在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];
Run Code Online (Sandbox Code Playgroud)
我在这里完全不知所措,我已经尝试将.0添加到CGPointMake的输入中以确保它们作为浮点数处理没有...无论我对此节点做什么,当它被添加到场景时它总是默认为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;
}
Run Code Online (Sandbox Code Playgroud)
显然,这不是问题的真正答案,但它是一种可能对你们中的一些人有所帮助的解决方法。我在 Apple 开发者论坛上提出了一个问题,您可以在此处查看:
https://devforums.apple.com/thread/222332
希望我能尽快收到回复。
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |