我正在使用 SpriteKit 编写一个涉及许多标记球的 iOS 游戏。我通过构建具有 2 个孩子的父 SKSpriteNode 来构建这些“rollingBalls”:
a) 一个 SKShapeNode(实际的圆形)
b) 和一个 SKLabelNode(标签)
球将在整个屏幕上移动,在二维中与彼此和其他对象交互,并且完全依赖于预期的物理特性(想想台球)。但是,如果可能的话,我希望标签不与父级一起旋转,以便它始终保持易于阅读。
最简单的方法是什么?
标签不应该是容器的子项吗?有没有其他方法可以将它固定在 ballShape 上?或者我可以在标签上设置一些属性等?
这是我现在得到的:
double ballDiameter = 40;
UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect:
CGRectMake(-ballDiameter / 2, -ballDiameter / 2,
ballDiameter, ballDiameter)];
SKSpriteNode *container = [[SKSpriteNode alloc]init];
container.name = @"rollingBall";
SKShapeNode *ballShape = [[SKShapeNode alloc] init];
ballShape.path = ovalPath.CGPath;
SKLabelNode *ballLabel = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
ballLabel.text = @"some random string";
ballLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter;
ballLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;
ballLabel.position = CGPointMake(0,0);
[container addChild:ballShape];
[container addChild:ballLabel];
container.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:ballDiameter / 2];
container.physicsBody.usesPreciseCollisionDetection = YES;