2016-12-26 155 views
2

我是SpriteKit的新手,我正在學習如何在縱向模式下在靠近屏幕底部的中心位置放置SpritekitNode的教程,但無論使用哪種代碼,我的對象都不會假定位置在教程。我已經看了一些其他的教程,他們幾乎與定位SpriteKitNode的代碼相同。爲什麼我的SpriteKitNode位置不能正確顯示?

這是我在GameScene.swift唯一代碼:我還沒有添加任何東西GameScene.sks或所做的任何更改與上面的代碼又info.plist中

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

,顯示在mySpriteKitNode屏幕的右側中心如下圖所示。該飛船的位置應靠近紅色的X

Spaceship should be positioned near the red X

我已經看過關於在SpriteKit定位問題,幾個後但還沒有找到一個解決方案。

如果有人可以請解釋我到底做錯了什麼?謝謝

回答

4

這是因爲你正在關注的教程可能已經過時。之前,從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 
相關問題