为什么我的SpriteKitNode位置无法正确显示?

时间:2016-12-26 10:46:41

标签: sprite-kit position swift3

我是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附近。

Spaceship should be positioned near the red X

我已经看了几篇关于在SpriteKit中定位的问题,但还没有找到解决方案。

如果有人能解释我到底做错了什么?感谢

1 个答案:

答案 0 :(得分:4)

这种情况正在发生,因为你所关注的教程可能已经过时了。之前,当从sks文件加载场景时,它将anchorPoint设置为0,0。现在,默认设置为0.5,0.5。

因此,您既可以使用当前代码,又可以将场景的锚点设置为0.0,0.0,或者保留场景的anchorPoint,并设置播放器position {{相应的1}}属性:

//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