2017-04-14 1 views
0

enter image description hereSpriteKit 게임 : 나는 현재 타일 편집기로 <strong>SpriteKit</strong> 게임에 일하고 있어요 게임 플레이보기

이동. 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) 
    } 
} 

Actuall, 나는 게임의 화면을 부분적으로 보여 주기만하면 생명과 동전의 수와 같은 통계를 표시 할 수 있습니다. 그렇다면 게임 화면을 이동하여 남은 영역을 통계 번호를 왼쪽과 아래에 표시하는 방법은 무엇입니까? 감사.

enter image description here

답변

0

당신은 단순히 플레이어에서 0의 거리를 유지하기 위해 카메라에 제약 조건을 추가 할 수 있습니다. 그런 다음 GUI에서 모든 노드를 카메라의 하위 노드로 두십시오. 그렇게하면 GUI가 당신이 무엇을하더라도 (심지어 스케일링은 영향을 미치지 않습니다.) 카메라를 따를 것입니다.

제약 예 : 팁을위한

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

감사합니다. 그렇다면 어떻게 카메라에 제약 조건을 설정합니까? –

+0

감사합니다. 유용한 팁처럼 들리네. 그러나 나는 그 마법 0이 어떻게 작용 하는지를 모른다. 그것은 그것이 SKRange 개체가 될 것으로 보인다. –

+0

노드 사이의 거리입니다. 거리와 대상을 지정하고 이동을 제한하려는 노드의 제약 배열 (이 경우 카메라)에 제약 조건을 할당합니다. 0 자체는 곧바로 해결할 실수입니다. 실제로 범위를 지정할 수 있기 때문에 일부 부드러운 카메라 효과를 줄 수 있습니다. 그러나 플레이어 노드를 완벽하게 따르도록하려면 편집을 살펴보십시오. – BadgerBadger