2017-02-10 12 views
0

私は単純なSpriteKitゲームを作成しようとしています。私は画面の下部中央から始まるプレーヤーを持っています。 私のGameSceneにカメラを追加しましたが、それは動作しません。私はこのコードでそれを実行すると:SKCameraNode working weird

class GameScene: SKScene { 
    let mPlayer = Player(circleOfRadius: 45, fillColor: myColors.blue, strokeColor: myColors.red) 
    let cameraNode = SKCameraNode() 

    override func didMove(to view: SKView) { 
     setup() 
    } 

    override func update(_ currentTime: TimeInterval) { 
     // Called before each frame is rendered 
     moveCamera() 
     Player.movePlayerUp(mPlayer: mPlayer) 
    } 

    func setup(){ 
     mPlayer.position = CGPoint(x: self.frame.midX - PLAYER_WIDTH, y: self.frame.minY + PLAYER_HEIGHT) 

     self.camera?.position = mPlayer.position 

     self.camera = cameraNode 
     self.addChild(cameraNode) 
     self.addChild(mPlayer) 
    } 

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 
     for touch in touches{ 
      let location = touch.location(in: self) 
      mPlayer.run(SKAction.moveTo(x: location.x, duration: 0.1)) 
     } 
    } 

    func moveCamera(){ 
     let moveAction = SKAction.moveTo(y: mPlayer.position.y, duration: 0.1) 
     cameraNode.run(moveAction) 
    } 
} 

プレイヤーは下から始まるとすぐに、この絵のように、画面の中央に移動されています。私はカメラが従うことを行うことができますどのようenter image description here

最初からプレイヤーを選んでトップに移動しますか? 私の質問がはっきりしていて、画像のサイズが残念であることを願っています。

答えて

0

このコードは空のXcodeプロジェクトで役に立ちます。あなたは、あなたの背景イメージが1色であり、プレイヤーを短時間だけ動かしているためではないと考えているでしょう。

また、更新方法では、プレーヤーを常に中央に移動するように設定していますが、これは必須ではありません。

移動した場合に見やすくするために背景にいくつかのストライプを追加してください。このコードを更新メソッドに追加するよりも、プレーヤーをゆっくりと上に移動してください。

let action = SKAction.move(by: CGVector(dx: 0, dy: 5), duration: 1) 
mPlayer.run(action) 

カメラがプレーヤーに正しく従っていることがわかります。

カメラの位置をy軸上など、プレーヤーとは別の場所に配置する必要がある場合は、カメラのy位置を増減するだけです。

let moveAction = SKAction.moveTo(y: mPlayer.position.y + 200, duration: 0.1) 
cameraNode.run(moveAction) 

希望これは

+0

を助け、私はあなたのコードを追加しようとしましたが、何も違うように見えるん。カメラが動いている場合、プレーヤーが上に移動すると、背景がゆっくりと底から「消える」のはなぜですか? – swiftnewbie

+0

それは私のために働いています。私はあなたのコードを新しいゲームプロジェクトにコピーし、ちょうど背景にいくつかのストライプを追加し、移動方法を変更しました。すべて正常に動作します。あなたの背景はイメージですか、またはシーンの背景色を設定しましたか? – crashoverride777

+0

背景色です。それはうまくいくように見えますが、プレイヤーが上がるにつれて画面の下部が「消える」ことを望みます。 – swiftnewbie