Swift:Spritekit:切换场景(锚点?)
Swift: Spritekit: Switching Scenes (anchor point?)
我有两个场景想切换。
每个场景都有一个切换到另一个场景的按钮,我希望该按钮位于屏幕中间。
对于第一个场景,这是可行的(我将按钮放在 0,0 处)。但是对于第二个场景,0,0 的锚点在左下角而不是中心..奇怪的是,当回到第一个场景时,按钮出现在按钮左边,即使它之前是居中的!
- 场景 1:按钮居中
- 场景 2:按钮@左下方
- 场景 1:按钮@左下方
- 场景 2:按钮@左下方
- 场景 1:按钮@左下方
- 等..
这是代码(两个场景的代码相同,除了场景名称)
class LevelGeneral: SKScene {
var buttonplay = SKSpriteNode()
override func didMove(to view: SKView) {
buttonplay = SKSpriteNode(imageNamed: "button1")
buttonplay.size = CGSize(width: self.frame.width/2, height: self.frame.height/8)
buttonplay.position = CGPoint(x: 0, y: 0)
self.addChild(buttonplay)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
if buttonplay.contains(location) {
let nextScene = GameScene(size: self.size)
let reveal = SKTransition.fade(withDuration: 0.1)
self.view?.presentScene(nextScene,transition: reveal)
}
}
}
}
如果我把按钮位置改成screenwidth/2、screenheight/2(两个场景),按钮会先出现在右上角,然后居中。
任何帮助将不胜感激
这是因为 LevelGeneral 是使用默认锚点为 0.5,0.5 的 SKS 文件制作的,而 "GameScene" 是通过大小为 self.size
的代码制作的,锚点为 0.0, 0.0。您应该尝试与加载场景的方式保持一致。
个人应该习惯设计与功能分离的心态。在 SpriteKit 编辑器中构建一切的外观,您永远不必猜测为什么事物没有出现在应有的位置(除非某些功能导致它没有出现在应有的位置)
我有两个场景想切换。 每个场景都有一个切换到另一个场景的按钮,我希望该按钮位于屏幕中间。 对于第一个场景,这是可行的(我将按钮放在 0,0 处)。但是对于第二个场景,0,0 的锚点在左下角而不是中心..奇怪的是,当回到第一个场景时,按钮出现在按钮左边,即使它之前是居中的!
- 场景 1:按钮居中
- 场景 2:按钮@左下方
- 场景 1:按钮@左下方
- 场景 2:按钮@左下方
- 场景 1:按钮@左下方
- 等..
这是代码(两个场景的代码相同,除了场景名称)
class LevelGeneral: SKScene {
var buttonplay = SKSpriteNode()
override func didMove(to view: SKView) {
buttonplay = SKSpriteNode(imageNamed: "button1")
buttonplay.size = CGSize(width: self.frame.width/2, height: self.frame.height/8)
buttonplay.position = CGPoint(x: 0, y: 0)
self.addChild(buttonplay)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
if buttonplay.contains(location) {
let nextScene = GameScene(size: self.size)
let reveal = SKTransition.fade(withDuration: 0.1)
self.view?.presentScene(nextScene,transition: reveal)
}
}
}
}
如果我把按钮位置改成screenwidth/2、screenheight/2(两个场景),按钮会先出现在右上角,然后居中。 任何帮助将不胜感激
这是因为 LevelGeneral 是使用默认锚点为 0.5,0.5 的 SKS 文件制作的,而 "GameScene" 是通过大小为 self.size
的代码制作的,锚点为 0.0, 0.0。您应该尝试与加载场景的方式保持一致。
个人应该习惯设计与功能分离的心态。在 SpriteKit 编辑器中构建一切的外观,您永远不必猜测为什么事物没有出现在应有的位置(除非某些功能导致它没有出现在应有的位置)