私はこのゲームを見ました
ファンシーパンツ2。そして、物理学と美しいアニメーションとは別に気付いたのは、キャラクターが坂道に沿って移動していることです。私はBox2dでの経験はほとんどありませんが、このカーブしたスロープの概念は初めてです。もし誰かがこのコンセプトとその実装について私に啓蒙したなら、それは私にとって大きな助けになるでしょう。実装がbox2dにない場合でも、それは歓迎されます。
私はこのゲームを見ました
ファンシーパンツ2。そして、物理学と美しいアニメーションとは別に気付いたのは、キャラクターが坂道に沿って移動していることです。私はBox2dでの経験はほとんどありませんが、このカーブしたスロープの概念は初めてです。もし誰かがこのコンセプトとその実装について私に啓蒙したなら、それは私にとって大きな助けになるでしょう。実装がbox2dにない場合でも、それは歓迎されます。
回答:
どのようにBox2Dで曲線を取得しますか?
でBOX2Dの未発表バージョン、二つの新しい形状の種類があるb2LoopShapeとb2EdgeShapeあなたがラインセグメントのシーケンス外のカーブを作成してみましょう。
リリースされたバージョンでは、角度を付けて設定された複数の小さなボックスを使用して同様の効果を得ることができますが、ボディは接続ポイントの近くで不安定で予期しないことを行う傾向があります。なので、未公開版の使用をお勧めします。
キャラクターはどのようにしてカーブから落ちることができますか?
キャラクターをホイールにしよう!プラットフォーマーの物理学についての私の質問はこれについていくらか議論がありますが、基本的な考え方は、キャラクターの体を回転するホイールにマウントし、ホイールに回転力を加えることによって動くことです。ホイールには摩擦がありますが(実際には)、重力による下向きの力により、実際のホイールのように、坂を下って回転します。回転ジョイントのモーターパラメータを変更することで、小さな傾斜の転がりを避けるために必要なだけ回転に抵抗することができます。
ファンシーパンツはFlashで作成され、Flashには 'hitTest'と呼ばれる特定のメソッドがあり、描画されたものに対してピクセルをテストできます(この場合、ファンシーパンツキャラクターの下部に沿って2〜3ピクセルのhitTestsを実行します)。指定されたムービークリップオブジェクト内。正しく感じるようにするのは少し難しいかもしれませんが、この組み込み関数は、非常に多くのFlashゲームがカーブしたスロープと衝突する理由です。他のほとんどのエンジンでは、プロセスははるかに複雑であり、通常は手動で実行する必要がありますが、いくつかの方法があります。
私が最もよく知っている方法は、エンジンがタイルベースの場合(ソニックザハリネズミを考える)、曲線として指定されたタイルはそれぞれ、キャラクターの現在の「X」位置に基づいて「Y」衝突位置を決定する式を持つことができますそのタイルの上。探している勾配の急さと曲がり具合に基づいて式を決定する必要があります。グラフ計算機またはグラフ作成プログラムを使用して、数式を試すことができます。このようにして、さまざまな曲線と数式が関連付けられた複数のタイルを作成できます。