このゲームのように、回転を処理する無限/繰り返しの世界を作成するにはどうすればよいですか?
http://bloodfromastone.co.uk/retaliation.html
次のような階層を使用して、回転する移動する世界をコーディングしました。
シーン
-mainLayer(CCLayer)-rotationLayer(CCNode)-positionLayer
(
CCNode)
rotationLayerとpositionLayerのサイズは同じです(現在4000x4000ピクセル)。
私はrotationLayerを回転させて全世界を回転させ、positionLayerを移動して全世界を移動します。これにより、プレーヤーは常にデバイス画面の中央に留まり、移動して回転するのは世界です。
ここで、プレーヤーが世界の境界に到達した場合(世界が移動して、世界の境界がデバイスの画面の境界に接触するようになる)、世界が反対の境界に「ラップ」されるようにします。世界が無限になるように。世界が回転していなければ、それは簡単ですが、今では回転しているので、これを行う方法がわかりません。私は数学と数学の考え方がばかなので、ここで助けが必要です。
今、私はここでcocos2d-iphone関連のヘルプは必要ないと思います。私が必要としているのは、プレーヤーが世界の境界の外にいるかどうかを計算する方法と、世界を包むために世界に与えなければならない新しい位置を計算する方法です。
正方形の世界の中で私の鋳造所となる円の半径を計算する必要があると思います。正方形の世界がどの角度にあっても、表示される長方形(画面)が常に境界の内側にあることが保証されます。ワールドスクエア。次に、表示されている長方形の境界が境界円の外側にあるかどうかを計算する方法が必要です。その場合、世界を移動する境界円の新しい反対の位置を計算する方法が必要です。説明のために、5つの画像を追加しました。
回転した正方形の世界の内側の境界円の内側にある目に見える長方形:
回転した正方形の世界の内側にある、目に見える長方形のヒット境界円の上部:
回転した正方形のワールドが反対の垂直位置に移動したため、表示されている長方形の下部が回転したワールド内の境界円に当たるようになりました。
別のシナリオを説明するために、回転した正方形の世界の内側にある、表示されている長方形の上部のバウンズサークルの別の例:
そして、再び回転した正方形の世界が反対の垂直位置に移動し、表示されている長方形の下部が回転した世界の内側の境界円に当たるようになりました。
回転していない状況でpositionLayerを移動することは、世界が回転しない限りこれを理解できると言ったので、私が理解した数学ですが、回転します。移動/配置されるワールド/CCNode(positionLayer)は、回転されるワールド/ CCNode(rotationLayer)内にあります。回転するrotationLayerのアンカーポイントは常に画面の中央にありますが、移動するpositionLayerは回転するrotationLayerの内側にあるため、rotationLayerのアンカーポイントを中心に回転します。そして、私は迷子になります...たとえば、positionLayerを十分に下に移動して、その上部の境界線が画面の上部に当たる場合、JohnPSが説明するように、そのpositionLayerをラップする必要がありますが、それほど単純ではありません。ベクターベースでラップする必要があります。 rotationLayerCCNodeの回転について。これはどうしたらいいかわかりません。
ありがとう
Søren