gpt4 book ai didi

ios - Swift 3 中的节点定位问题

转载 作者:可可西里 更新时间:2023-11-01 01:21:47 26 4
gpt4 key购买 nike

我刚刚开始研究 Swift 3 - 之前从未编写过代码,所以我对它完全陌生。一直在看一个非常基本的 Node 教程并拥有以下代码:

class GameScene: SKScene {

override func didMove(to view: SKView) {

// SKLabelNode
var exampleLabelNode = SKLabelNode(fontNamed: "Helvetica")
exampleLabelNode.text = "Example Label Node!"
exampleLabelNode.fontSize = 30
exampleLabelNode.fontColor = SKColor.white
exampleLabelNode.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height * 0.75)
self.addChild(exampleLabelNode)

// SKSpriteNode
var exampleSpriteNode = SKSpriteNode(imageNamed: "myImage")
exampleSpriteNode.size = CGSize(width: 180, height: 180)
exampleSpriteNode.anchorPoint = CGPoint(x: 0.5, y: 0.5)
exampleSpriteNode.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height * 0.25)
exampleSpriteNode.zPosition = 100
exampleSpriteNode.name = "exampleName"
self.addChild(exampleSpriteNode)

}

}

它的意思是将 exampleLabelNode 放在屏幕顶部的中心和 3/4 处,将 exampleSpriteNode 放在屏幕底部的 1/4 处。

然而,它的位置 exampleSpriteNode 位于屏幕顶部的 3/4 处,而 exampleLabelNode 则位于屏幕右侧的一半处。

本教程适用于 Swift 2,定位语法等是否与 Swift 3 不同?

最佳答案

发生这种情况是因为默认场景 anchorPoint 是 (0.5, 0.5),表示场景的中心。这也是任何节点的默认 anchorPoint。这使得点 (x: 0, y: 0) 位于场景的中心。

如果您遇到问题,我建议您阅读更多相关信息或提出问题以更好地理解它。

Apple 官方文档

SKSpriteNode anchorPoint

SKScene anchorPoint

注意: SKScene 的文档说默认值为 (0, 0) 是不正确的。

要解决您的问题,您可以将此行添加到 didMove(to view) 的开头:

self.anchorPoint = CGPoint(x: 0, y: 0)

这会将场景 anchorPoint 设置到场景的左下角,以前是这样(教程已过时)。

或者,既然您知道 anchorPoint 的工作原理,您可以重做 Sprite 放置。我建议这样做是因为我发现从中心向外而不是从左下角构建场景时构建游戏更容易。

关于ios - Swift 3 中的节点定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43572371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com