フィジックスボディのSpriteKitシーンを作成しました。これはかなりうまくいっています。 Appleのベストプラクティスを「カメラノード」で使用して、シーンをスクロールしています。SpriteKit Physics移動するシーンのジョイントが壊れています
マイシーンノードツリーはそのようなものです:
Scene
|- World
|- Camera node
|- Game nodes with physics bodys
私の問題は、ゲーム中に私が動的に新しいジョイント(主に固定ジョイント)を使用して新しいノードを作成し、です。その時点で、ワールドノードは最初とは異なる位置にあります(例:スタート(0,0)、ゲーム中(1000,500)..) ここで、固定ジョイントのアンカーポイントは私が望むポジションは、シーンのどこかにあります。
私が想定し、シーンの座標系は、物理エンジンの座標系とは異なっています。
アンカーポイントのために、私は次の変換を使用します。
[world.scene convertPoint:node.position fromNode:node.parent];
私は「ノード」の位置にanchorpointを設定したいです。 ワールドノードを移動した後、アンカーポイントの計算がもう機能していません。
ありがとうございました!
Greetz - Nekro
更新:プレーヤー上でシーンを中央に
コード
- (void)centerOnNode:(SKNode*)node {
CGPoint cameraPositionInScene = [node.scene convertPoint:node.position fromNode:node.parent];
node.parent.position = CGPointMake(node.parent.position.x - cameraPositionInScene.x, node.parent.position.y - cameraPositionInScene.y);
}
ゲームノードをカメラノードの代わりにワールドに追加してみてください。私はテストアプリケーションを実装し、世界を移動した後にジョイントを追加する/カメラは期待どおりに動作しました。 – 0x141E
@ 0x141E申し訳ありませんが、私はテキストを更新しました。ゲームノードは、カメラノードの子ノードではなく、カメラノードに並列に追加されます。奇妙なことは、私がSpriteKitシーンの物理を視覚化すると、散発的なジョイントが中央のプレイヤーノードに接続されているように見えることです。私はすでにジョイントを作成する唯一の関数にブレークポイントを設定しました。この "ゴーストジョイント"のために決して走りません... – Nuker
あなたの物理機関はシーン座標を使用して接続されていますか?ノードではないのですか? – ColdSteel