就個人而言,我不會被跟蹤屏幕寬度/ screenHeight,它違背SpriteKit的基礎開始(你的現場表現爲你的虛擬屏幕,這是你應該如何處理它裏面的所有內容)相反,你應該做的是將屏幕轉換爲場景,這種方式無論是縮放模式還是錨點,你的標籤都是你想要的地方。
爲了讓您的視圖的右上角轉換爲場景,你做
if let view = scene.view
{
let topRightPos = view.convert(CGPoint(x:view.frame.maxX,y:view.frame.minY),to:scene)
let camTopRight = scene.convert(topRightPos,to:cameraNode)
}
現在我們知道我們的右上方的位置是:
我們可以做
if let view = scene.view
{
let topRightPos = view.convert(CGPoint(x:view.frame.maxX,y:view.frame.minY),to:scene)
let camTopRight = scene.convert(topRightPos,to:cameraNode)
coinLabel.position = camTopRight
coinLabel.zPosition = 1
coinLabel.fontSize = 50
coinLabel.fontColor = UIColor.black
coinLabel.fontName = "04b19"
coinLabel.horizontalAlighmentMode = .right
coinLabel.verticalAlighmentMode = .top
cameraNode.addChild(coinLabel)
}
右對齊我們的標籤,使文本總是延伸到左側,然後添加硬幣,我們這樣做:
if let view = scene.view
{
let topRightPos = view.convert(CGPoint(x:view.frame.maxX,y:view.frame.minY),to:scene)
let camTopRight = scene.convert(topRightPos,to:cameraNode)
coinLabel.position = camTopRight
coinLabel.zPosition = 1
coinLabel.fontSize = 50
coinLabel.fontColor = UIColor.black
coinLabel.fontName = "04b19"
coinLabel.horizontalAlighmentMode = .right
coinLabel.verticalAlighmentMode = .top
cameraNode.addChild(coinLabel)
cornerCoin.position = CGGPoint(x:0.0,y:coinLabel.frame.midY)
cornerCoin.anchorPoint = CGPoint(x:1.0,y:0.5)
cornerCoin.zPosition = 10
cameraNode.addChild(cornerCoin)
}
我們的標籤現在應該位於我們相機的右上角位置,並且硬幣應該位於我們標籤的左側與文本垂直居中。
如果您不喜歡頂部對齊的外觀,您可能想要玩標籤的位置。
什麼是screenWidth&screenHeight?我假設你的場景有一個0,0的anchorPoint? –