2015-03-30 31 views
0

所以我在现场一对夫妇的SKLabelNodes这样的:我应该如何调整SpriteKit中的标签节点?

SKLabelNode *label1 = [SKLabelNode labelNodeWithFontNamed:@"Arial"]; 
label1.text = @"Hello World!"; 
label1.fontColor = [SKColor redColor]; 
label1.fontSize = 90; 
label1.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); 
[self addChild: label1]; 

当现场启动,我希望他们扩大规模。我为此使用了SKAction,但scaleBy导致文字模糊,并调整大小为没有奏效。

另外我猜这不是字体的方式。有没有更好的方法来做到这一点,或者我应该使用UILabels?我不想那样做,因为那意味着我不能在其上使用SpriteKit物理,或者我可以吗?

感谢

回答

-1

这是我对你的问题的建议。

  1. 我永远不会缩放任何东西。遵循一般准则,如果你缩小规模,你通常会保持质量。扩大规模创造了像素艺术的感觉。

  2. 如果您不使用标签节点来显示频繁更改的数字,请使用SKSpriteNode。使用一个基本的照片编辑器键入您的标签,并将其保存为您将分配给spritenode的图像。 Spritenodes是用来处理物理的,所以你应该用它们来处理你所有的物理。

  3. 如果你确实需要显示经常改变的大范围数字,但你仍然需要它们受到物理学的影响,你可能会问自己,我是否应该创建一个图像,我的精灵?答案是不。您可以将标签尺寸设置为比您需要的尺寸更大,并将其缩小。要处理物理,您可以将此标签添加为某个SKSpriteNode的子项,该SKSpriteNode具有您希望用于标签的物理属性。现在,你有一个spritenode可以与你想要的物理交互,但也有一个显示你的信息的标签节点。

+0

这很聪明......还有一件事:我不知道我是否疯了,但是我可以以某种方式将UITextView制作成节点的子节点并让它处理物理或者要求太多。我只是喜欢利用这些功能来更熟悉框架。谢谢 – Squid 2015-03-30 20:01:14

+0

我还没有看到太多的人在同一视图中集成spritekit和UIKit的示例或教程。我通常会尽量避免这种情况,因为我相信苹果是一家公司,并且会假设他们为我们提供了更适合游戏引擎环境的工具。更具体地说是指绘制图形的容易度。这只是基于迄今为止我看到的这种相当新的技术的推测。 – meisenman 2015-03-30 20:07:54

+0

虽然我没有制作游戏,但我正在制作一款具有类似游戏功能的文本应用程序。我想疯了。我会研究它 – Squid 2015-03-30 20:09:41

0

我跑从字体大小10 [SKAction scaleBy:至8的比例因子,你说得对文本由3以上的规模越来越大大小的时候是模糊的。

您可以使用块来随着时间增加字体大小。你将不得不使用很多步骤,但结果要好得多。

myInt = 10; 

SKAction *block0 = [SKAction runBlock:^{ 
    label0 = [SKLabelNode labelNodeWithFontNamed:@"Arial"]; 
    label0.text = @"Hello World!"; 
    label0.fontColor = [SKColor redColor]; 
    label0.fontSize = myInt; 
    label0.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); 
    [self addChild: label0]; 
}]; 

SKAction *wait0 = [SKAction waitForDuration:1.5]; 

SKAction *wait1 = [SKAction waitForDuration:0.5]; 

SKAction *block1 = [SKAction runBlock:^{ 
    label0.fontSize += (myInt + 10); 
}]; 

[self runAction:[SKAction sequence:@[wait0, block0, wait1, block1, wait1, block1, wait1, block1, wait1, block1, wait1, block1]]]; 
+0

是啊,我忘了补充,但我这样做太,我只是想知道如果有一个更快的方法 – Squid 2015-03-30 19:42:46

+0

@Squid - 随着SKLabelNode你得到要么规模或增加字体大小。 – sangony 2015-03-30 19:51:42

+0

是的,如果你不这么做,它看起来很不稳定。 – Squid 2015-03-30 19:52:31

相关问题