2016-12-26 6 views
2

Ich bin neu in SpriteKit und ich folge einem Tutorial, das einen SpritekitNode in der Mitte unten im Bildschirm im Hochformat positioniert, aber unabhängig von dem Code, den ich verwende, übernimmt mein Objekt nicht die Position wie in der Anleitung. Ich habe mir ein paar andere Tutorials angeschaut und sie sind in Bezug auf den Code, um den SpriteKitNode zu positionieren, ziemlich genau dasselbe.Warum wird meine SpriteKitNode-Position nicht richtig angezeigt?

Dies ist der einzige Code ist ich in GameScene.swift haben:

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

ich nichts zu GameScene.sks oder Änderungen vorgenommen hinzugefügt haben, noch mit dem Code über info.plist wird mySpriteKitNode angezeigt auf die rechte Mitte des Bildschirms wie im Bild unten gezeigt. Das Raumschiff soll in der Nähe des roten X

Spaceship should be positioned near the red X

Ich habe in SpriteKit an mehreren Posten in Bezug auf Probleme mit der Positionierung sah positioniert werden, aber noch keine Lösung gefunden.

Wenn jemand bitte erklären könnte, was genau mache ich falsch? Danke

Antwort

4

Das passiert, weil das Tutorial, das Sie folgen, wahrscheinlich veraltet ist. Wenn die Szene zuvor aus einer sks Datei geladen wurde, wurde anchorPoint auf 0,0 gesetzt. Jetzt ist es standardmäßig auf 0,5, 0,5 eingestellt.

So können Sie Ihren aktuellen Code verwenden, aber Ankerpunkt der Set-Szene 0.0, 0.0 oder Szene zu verlassen anchorPoint wie es ist und setzte Spieler position Eigenschaft entsprechend:

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