【发布时间】:2013-10-16 21:27:18
【问题描述】:
我正在使用 SpriteKit 编写一个涉及许多标记球的 iOS 游戏。我正在通过构建具有 2 个孩子的父 SKSpriteNode 来构建这些“滚动球”:
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;
【问题讨论】:
-
这很奇怪 - 我在刚启动的应用程序中做同样的事情。我只是想以某种方式添加一个销接头,所以标签被固定到父节点。
-
hmmm.. 这听起来比我下面的解决方案更有希望......但是如果标签固定到父级,它不会仍然旋转吗?
-
它将是旋转的,但在某种程度上独立于父物理体,因此您可以调整定位等。我计划让我的看起来像摩天轮上的马车。大轮子转了转,但马车仍然悬在它下面。
-
有趣...您有机会发布或分享一些代码吗?想看看你是怎么做的吗?
-
我还没有尝试过,其他答案会让它暂时满意。
标签: ios rotation sprite-kit skphysicsbody