2016-12-26 96 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 
相关问题