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)
}
}
實際工作中,我只希望部分地顯示遊戲畫面,這樣我可以顯示一個類似的生活和硬幣數的一些統計數據。那麼我該如何移動遊戲屏幕,以便我可以使用剩餘區域向左側和底部顯示統計數字?謝謝。
感謝您的提示。那麼如何爲相機設置一個約束? –
謝謝。這聽起來像一個有用的提示。但我不知道魔法0是如何發揮作用的。它似乎應該是一個SKRange對象。 –
這是節點之間的距離。您給它一個距離和一個目標,然後將約束分配給要限制移動的節點的約束陣列,在這種情況下,就是相機。 0本身是我立即修復的一個錯誤,因爲您實際上可以指定一個範圍,這可以提供一些平滑的相機效果。但爲了使它完美地跟隨播放器節點,請查看編輯。 – BadgerBadger