0

在此处输入图像描述

我目前正在使用平铺编辑器开发 SpriteKit游戏。我有一张如下图所示的带有 GameScene 场景 (.sks) 的地图。目前,它看起来像 PacMan 游戏。如上图所示,游戏角色停留在游戏画面的中央。当用户触摸屏幕时,游戏角色将移动到该触摸点,这要归功于touchesBegan. 并且相机将跟随游戏角色。现在,我有以下内容。

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

实际上,我只想部分显示游戏屏幕,以便显示一些统计数据,例如生命和硬币的数量。那么如何移动游戏屏幕以便我可以使用剩余区域在左侧和底部显示统计数字?谢谢。

在此处输入图像描述

4

1 回答 1

0

您可以简单地向相机添加一个约束,使其与玩家的距离为 0。然后对于您的 GUI,将所有这些节点作为相机的子节点。这样,无论你对它做什么,gui都会跟随相机(即使缩放也不会影响它)。

约束示例:

func setupCamera() {
  let distanceConstraint = SKConstraint.distance(SKRange(constantValue: 0), to: playerNode)
  cameraNode.constraints = [distanceConstraint]
}
于 2017-04-14T01:40:39.933 回答