为什么我的 SpriteKitNode 位置没有正确显示?
Why is my SpriteKitNode position not being displayed properly?
我是 SpriteKit 的新手,我正在学习一个教程,该教程在纵向模式下将 SpritekitNode 放置在屏幕底部附近的中心,但无论我使用什么代码,我的对象都不会假定该位置在教程中讨论。我看过其他几个教程,关于定位 SpriteKitNode 的代码,它们几乎是一样的。
这是我在 GameScene.swift:
中唯一的代码
import SpriteKit
import GameplayKit
class GameScene: SKScene {
var player:SKSpriteNode!
override func didMove(to view: SKView) {
player = SKSpriteNode(imageNamed: "Spaceship")
player.xScale = 0.5
player.yScale = 0.5
player.position = CGPoint(x: self.frame.size.width / 2, y: player.size.height / 2 + 20)
self.addChild(player)
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
}
我没有向 GameScene.sks 添加任何内容或对 info.plist 进行任何更改,但是使用上面的代码,mySpriteKitNode 显示在屏幕的右中央,如下图所示。飞船应该在红色X附近
我已经查看了几个 post 关于 SpriteKit 中的定位问题,但还没有找到解决方案。
如果有人能解释一下我到底做错了什么?谢谢
发生这种情况是因为您正在学习的教程可能已过时。早些时候,当从 sks
文件加载场景时,它会将 anchorPoint
设置为 0,0。现在,默认设置为 0.5, 0.5.
因此您可以使用当前代码但将场景的锚点设置为 0.0、0.0,或者保持场景的 anchorPoint
不变并相应地设置玩家的 position
属性:
//player.position.x should be 0 which is middle of the screen
player.position.y = -frame.size.height / 2.0 + player.size.height/2.0 + 20.0
我是 SpriteKit 的新手,我正在学习一个教程,该教程在纵向模式下将 SpritekitNode 放置在屏幕底部附近的中心,但无论我使用什么代码,我的对象都不会假定该位置在教程中讨论。我看过其他几个教程,关于定位 SpriteKitNode 的代码,它们几乎是一样的。
这是我在 GameScene.swift:
中唯一的代码import SpriteKit
import GameplayKit
class GameScene: SKScene {
var player:SKSpriteNode!
override func didMove(to view: SKView) {
player = SKSpriteNode(imageNamed: "Spaceship")
player.xScale = 0.5
player.yScale = 0.5
player.position = CGPoint(x: self.frame.size.width / 2, y: player.size.height / 2 + 20)
self.addChild(player)
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
}
我没有向 GameScene.sks 添加任何内容或对 info.plist 进行任何更改,但是使用上面的代码,mySpriteKitNode 显示在屏幕的右中央,如下图所示。飞船应该在红色X附近
我已经查看了几个 post 关于 SpriteKit 中的定位问题,但还没有找到解决方案。
如果有人能解释一下我到底做错了什么?谢谢
发生这种情况是因为您正在学习的教程可能已过时。早些时候,当从 sks
文件加载场景时,它会将 anchorPoint
设置为 0,0。现在,默认设置为 0.5, 0.5.
因此您可以使用当前代码但将场景的锚点设置为 0.0、0.0,或者保持场景的 anchorPoint
不变并相应地设置玩家的 position
属性:
//player.position.x should be 0 which is middle of the screen
player.position.y = -frame.size.height / 2.0 + player.size.height/2.0 + 20.0