Позиционирование SKLabelNode не работает должным образом

Я работаю над игрой, и мне нужно реализовать верхнюю панель, содержащую такие детали, как оценка и другие вещи.

Моя верхняя панель должна иметь следующее (слева направо): - значок 50x50, который изменяется в соответствии с уровнем, но он того же размера - метка с некоторым текстом, который изменяется в соответствии с уровнем -... другие элементы

Проблема заключается в том, что при изменении текста метки метка иногда находится слишком далеко от значка, а иногда - над значком (в зависимости от длины текста).

Я думал, что понял позиционирование, но, видимо, я не..

//create array for level text label
levelTextArray = [[NSArray alloc] initWithObjects:@"\"Uuu! Bubbles!\"",@"\"Noob\"",@"\"I’m getting it..\"",@"\"This is easy\"",@"\"Wha?\"",@"\"It’s ooon now!\"",@"\"Come on..\"",@"\"Dude…\"",@"\"You’re pushing it..\"",@"\"I’ll show you!!\"",@"\"AAAAAAA!!!\"",@"\"Holy Bubbles… \"",@"\"Ninja mode on!\"",@"\"I’m on fire!!\"",@"\"The wheel's spinning, but the hamsters dead. \"", nil];

//add level text label
levelTextLabel = [[SKLabelNode alloc] init];
levelTextLabel.text = levelTextArray[0];
levelTextLabel.position = CGPointMake(60, CGRectGetMidY(scoreImage.frame)+5);

levelTextLabel.fontColor = [UIColor colorWithRed:0/255.0f green:1/255.0f blue:0/255.0f alpha:1.0f];
levelTextLabel.fontName = @"Noteworthy-Light";
levelTextLabel.fontSize = 14.0;
[self addChild:levelTextLabel];

ScoreImage является значком в этом случае. Кроме того, чтобы изображение полностью отображалось в виде, я размещаю его так:

  scoreImage = [[ SKSpriteNode alloc] initWithImageNamed:levelText];
    scoreImage.name = @"LevelImage";
    scoreImage.size = CGSizeMake(50, 50);
    scoreImage.position = CGPointMake(0+scoreImage.size.width/2, CGRectGetMaxY(self.frame)-scoreImage.size.height/2);

У меня такое ощущение, что я здесь что-то не так делаю.

Любая помощь приветствуется.

PS Текст метки, а также изображение значка изменяется в соответствии с уровнем в -(void)update:(CFTimeInterval)currentTime {

1 ответ

Решение

Попробуйте установить horizontalAlignmentMode из SKLabelNode:

levelTextLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeLeft;

По умолчанию SKLabelHorizontalAlignmentModeCenter,

Другие вопросы по тегам