11

私は Apple のSceneKitを使用して基本的なレーシング ゲームに取り組んでおり、車のシミュレーションで問題が発生しています。SCNPhysicsVehicleビヘイビアーを使用して、車を適切にセットアップし、文書化された方法で運転することができました。

しかし、車の位置を取得できません。SCNPhysicsVehicle がシャーシと車輪を含む SCNNodes を車の移動に合わせて移動させることは論理的に思えますが、SCNNodes は元の位置と向きのままです。不思議なことに、シャーシの SCNPhysicsBody の速度はシミュレーション全体で正確なままなので、車の位置は SCNNode ではなく SCNPhysicsBody に基づいていると推測できます。残念ながら、SCNPhysicsBody の位置を取得するために私が見つけた文書化された方法はありません。

車の位置を取得することは些細なことであり、レーシング ゲームを作成するために不可欠ですが、それを取得する方法を見つけることができないようです。ご意見やご提案をいただければ幸いです。

4

2 に答える 2

24

SCNPhysicsBodyシーン キットは、物理シミュレーションに基づいてを所有するノードの位置を自動的に更新するためSCNNode.position、探すのに適したプロパティです。

問題は、実際にはそのノードの 2 つのバージョンが使用されていることです。通常アクセスするノードは「モデル」ノードと呼ばれます。アニメーションを使用してプロパティを設定した場合でも、設定したプロパティのターゲット値が反映されます。は、現在レンダリングされているノードのpresentationNode状態を反映します。アニメーションが進行中の場合、ノードのプロパティには、アニメーションのターゲット値ではなく、中間値があります。

Action、physics、constraint 、およびupdate/render ループ メソッド内で行うシーン グラフの変更は、シーン グラフの「プレゼンテーション」バージョンを直接ターゲットにします。したがって、物理シミュレーションによって設定されたノード プロパティを読み取るには、presentationNode関心のあるノード (ビークルのchassisBody物理ボディを所有するノード) の を取得してから、プレゼンテーション ノードposition(またはその他のプロパティ) を読み取ります。

于 2014-06-20T05:41:30.530 に答える