所以我有一个显示用户高分的SKLabelNode,当用户得分高于例如5时,标签位置不在相同的位置,如果得分是例如35,那么,或者100让标签脱离屏幕,请有人帮忙解决这个问题,如果高分变化,有没有办法让标签保持在同一位置?我需要在标签上加上约束吗?顺便说一句,这是在sprite kit中使用swift
答案 0 :(得分:2)
你想在这里使用SKLabelNodeHorizontalAlignmentMode.Left,如下所示:
class GameScene: SKScene {
var label = SKLabelNode(fontNamed: "ArialMT")
var score: Int = 0 {
didSet {
label.text = "Score: \(score)"
}
}
override func didMoveToView(view: SKView) {
label.fontSize = 24
label.text = "Score: \(score)"
//Place the label in upper left corner of the screen
label.position = CGPoint(x: 50, y: CGRectGetMaxY(frame)-50)
//Add this
label.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
addChild(label)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
score+=5
}
}
结果:
答案 1 :(得分:1)
我尝试将节点的anchorPoint从(0.5,0.5)(默认值)更改为(0,0)。这意味着节点现在将“锚定”到左上角而不是中间。
编辑: SpriteKit中的(0,0)是BOTTOM LEFT。使用(0,1)代替TOP LEFT!