2017-04-14 20 views
0

enter image description hereSpriteKit Spiel: Bewegen Gameplay anzeigen

Ich bin derzeit auf ein mit einem Kachel-Editor SpriteKit Spiel arbeiten. Und ich habe eine Karte wie die folgende mit einer GameScene-Szene (.sks) gezeigt. Fürs Erste sieht es wie das PacMan-Spiel aus. Wie oben gezeigt, bleibt der Spielcharakter in der Mitte des Spielbildschirms. Wenn der Benutzer den Bildschirm berührt, bewegt sich der Spielcharakter dank touchesBegan zu diesem Berührungspunkt. Und die Kamera wird dem Spielcharakter folgen. Für jetzt habe ich folgendes.

enum GameStatus: Int { 
    case waiting = 0 
    case playing = 1 
    case pausing = 2 
    case gameOver = 3 
} 

class GameScene: SKScene, SKPhysicsContactDelegate { 
    // MARK: - Variables 
    var background: SKTileMapNode! // background 
    var player: SKNode! // player 
    let cameraNode = SKCameraNode() // cameraNode 

    // MARK: - DidMove 
    override func didMove(to view: SKView) { 
     setupNodes() 
     setupCamera() 
    } 

    // MARK: - Node set up 
    func setupNodes() { 
     // background // 
     background = childNode(withName: "World") as! SKTileMapNode 

     player = childNode(withName: "heroPlaying") 
     player.physicsBody = SKPhysicsBody(circleOfRadius: 16) 
     ... 

     // game state // 
     gameState = GameStatus.playing 
    } 

    // MARK: - Camera 
    func setupCamera() { 
     cameraNode.position = player.position 
     addChild(cameraNode) 
     camera = cameraNode 
    } 
    // MARK: - Camera 

    // MARK: - Update 
    override func update(_ currentTime: TimeInterval) { 
     if gameState == .playing { 
      updateCamera() 
     } 
    } 

    func updateCamera() { 
     camera?.position = player.position 
     //camera?.position = CGPoint(x: player.position.x - 192, y: player.position.y - 192) 
    } 
} 

Actuall, ich will nur das Spiel Bildschirm teilweise zeigen, so dass ich einige Statistiken wie die Anzahl der Leben und Münzen anzeigen. Wie kann ich den Spielbildschirm so verschieben, dass ich den verbleibenden Bereich für die Anzeige von Statistiknummern links und unten verwenden kann? Vielen Dank.

enter image description here

Antwort

0

können Sie einfach eine Einschränkung der Kamera hinzuzufügen in einer Entfernung von 0 von dem Spieler zu halten. Dann für Ihre GUI, legen Sie alle diese Knoten als Kinder Ihrer Kamera. Auf diese Weise wird die GUI der Kamera folgen, egal was Sie tun (selbst die Skalierung hat keinen Einfluss darauf).

Constraint Beispiel:

func setupCamera() { 
    let distanceConstraint = SKConstraint.distance(SKRange(constantValue: 0), to: playerNode) 
    cameraNode.constraints = [distanceConstraint] 
} 
+0

Danke für den Tipp. Wie stelle ich eine Beschränkung auf die Kamera ein? –

+0

Danke. Es klingt wie ein nützlicher Tipp. Aber ich weiß nicht, wie diese Magie 0 ins Spiel kommt. Es scheint, dass es ein SKRange-Objekt sein soll. –

+0

Es ist die Entfernung zwischen den Knoten. Sie geben ihm eine Entfernung und ein Ziel, und Sie ordnen die Einschränkung dem Beschränkungsarray des Knotens zu, den Sie begrenzen möchten, in diesem Fall der Kamera. Die 0 selbst ist ein Fehler, den ich sofort beheben werde, weil Sie tatsächlich einen Bereich angeben können, der einige glatte Kameraeffekte ergeben könnte. aber um es dem Player-Knoten perfekt folgen zu lassen, werfen Sie einen Blick auf den Edit. – BadgerBadger

Verwandte Themen