16

長い休日の週末だったので、コーディングのバグが再び発生し、遊んでみました。

マリオhttp://gfilter.net/junk/tileengine.jpg

私は基本的なタイルエンジンを作成しましたが、これまでこれを試みたことがないため、スプライトの衝突検出の処理と重力の現実的な物理学の実装に本当に苦労しています。

他のゲームホビーライターの場合、これにアプローチするための最良の方法に関するいくつかのウォークスルーを教えていただけますか?

アップデート:

進捗レポートを共有したいと思いました。

http://www.youtube.com/watch?v=-RKNQ2UiiLY<-ゲームの動作

それはまだ本当にバグがありますが、衝突検出はほとんど機能しています。私は他のいくつかの機能(ブロックをぶつける(バグに気付く)や敵との相互作用など)に取り組み始めました。

マリオはまだ月にいるように歩きます、私はこれらの定数を使用しています、よりリアリズムのためにそれらを微調整するためのアドバイスはありますか?

    const float AirDrag = 1.00f;
    const float GroundFriction = .97f;
    const float Gravity = 0.8f;
4

9 に答える 9

5

FarseerPhysics エンジンをダウンロードして、その仕組みを見てみましょうhttp://www.codeplex.com/FarseerPhysics XNA/Silverlight で利用できる最高のものだと思います!

于 2008-12-01T23:55:37.877 に答える
3

重力は簡単です:

const gravity = ... ; // pixels per timestep (eg. video frame) squared
// while in freefall, each timestep:
y_velocity += gravity;
y_pos += y_velocity;

念のために言っておきますが、私がプレイしたほとんどの2Dプラットフォームゲームには現実的な重力がありません。ゲームを楽しくするために何でもしてください!

于 2008-12-02T01:40:35.513 に答える
2

jnrdevが役に立つかもしれません。タイルの衝突/応答と傾斜をカバーしています。これは私が今まで見た中で最高のコードではありませんが、仕事は完了します。

于 2008-12-02T02:30:47.207 に答える
2

http://www.metanetsoftware.com/technique/tutorialA.htmlhttp://www.metanetsoftware.com/technique/tutorialB.htmlには、非常に役立つ 2-d プラットフォーマーのチュートリアルがいくつかあります。SOの他の場所で他の人から参照されていると思います。それらは、衝突の検出と応答、レイキャスティング、さまざまな最適化手法などをカバーし、数学にあまり興味のない人 (私のような) のために、すべての背後にある理論について十分に説明しています。剛体ダイナミクスのようなものまでは行きませんが、あなたが書いているタイプのゲームには必要ないと思います (もちろん、この種のものを追加するとクールになるでしょう.. .)

于 2009-05-09T21:26:31.300 に答える
1

それは迂回かもしれませんが、物理学や基本的な衝突検出などが含まれているXNA3.0のPlatformerスターターキットを試してみてください。XNAの外部で機能させるには、変更を加える必要がありますが、ロケット科学ではありません。

XNAGS3.0ダウンロード

于 2008-12-01T23:43:11.973 に答える
0

物理モデルに何を使用しているかはわかりませんが、流体抗力を使用する物理モデルは最近、別の SO の質問で取り上げられました。回答で提供したすべてを繰り返すことはしません。リンクするだけです。

要約すると、質問の OP は、オブジェクトを静止状態から最大速度まで加速したいと考えていました。2 つの異なるタイプの抗力の時間の関数として速度をモデル化するために、いくつかの導出を行いました。あなたの状況はわずかに異なる可能性があるため、使用される積分の形式が異なるか、異なる初期条件で解決する必要がある場合がありますが、私の答えが有益な方向性を示してくれることを願っています.

于 2009-03-25T17:24:57.303 に答える
0

複数のブロックがぶつけられるというバグは、プレイヤースプライトと最も整列している、またはオフセットが最小のブロックのみをぶつけることで修正できます。一方向だけに限定しないように注意してください。ブロックは実際にマリオのどの方向からでもぶつかることができます。(同じゲームでグラウンドポンドを行うことによって、またはドリルスピンすることによって上記)(シェルを使用することによって側面)

于 2009-07-26T14:39:09.153 に答える
-6

GameMakerについて聞いたことがありますか?

于 2008-12-02T02:25:07.810 に答える