2017-07-27 10 views
1

私はAgar.ioのものと比較できるカメラ設定でゲームを作っています。それは、上下左右に行くことができます。しかし、Agar.ioでは地図のスペースに制限されています。あなたが地図の側に走れば、あなたは戻らなければなりません。スイフト:カメラ境界の外にノードをラップ/ループ/リピートしますか?

しかし、私のゲームでは、カメラを地図の反対側に「折り返す」ようにします。

私は自分の作っので、私はすべての例を見つけることができませんでした:

// This is in an SKScene 

private func wrapNodes() { 

    let camPos = camera!.position // SKCameraNode of current scene 

    for node in self.children { 

    let nodePos = node.position 

    let x = camPos.x - nodePos.x 
    if x > spawnRect.width * 0.5 { 
     node.position.x = nodePos.x + spawnRect.width // spawnRect = map size 
    } else if x < -spawnRect.width * 0.5 { 
     node.position.x = nodePos.x - spawnRect.width // spawnRect = map size 
    } 

    let y = camPos.y - nodePos.y 
    if y > spawnRect.height * 0.5 { 
     node.position.y = nodePos.y + spawnRect.height // spawnRect = map size 
    } else if y < -spawnRect.height * 0.5 { 
     node.position.y = nodePos.y - spawnRect.height // spawnRect = map size 
    } 
    } 
} 

私のひどい数学の能力に驚くべきことに起因するが、これは実際に動作しているようです。

しかし、これには2つの問題があります。

まず第一に、私は自分自身を信用していないということです。私はどこかで間違いを犯したと思います。

2つ目は、シーン内のすべてのノードをループするのにかなりの時間がかかるため、より速い方法があることを期待していましたが、見つけられませんでした。だから、私は誰かがこれを行うためのより速い方法を知っていたのだろうかと思っていた。

いずれかのアイデアをいただければ幸いです!

答えて

0

これは現時点では速くて良いとは思えませんので、将来誰かが必要とする場合に備えてこの投稿を残しておきます。

関連する問題