タグ付けされた質問 「moving-platforms」

3
プラットフォームゲームで動くプラットフォームをどのように処理しますか?
私はbox2dなどを使用したくありません。単純な移動プラットフォーム(上下、左右、斜め、円形のパス)が必要です。私の質問は、プレーヤーがバウンスしたり揺れたりすることなく、プラットフォームにしっかりと固定されるように、更新順序/制御階層を処理することですか?

1
プラットフォーマーで動くプラットフォームの物理をどのように扱うのですか?
したがって、インターネットで数時間検索した後も、2Dプラットフォームゲームで移動するプラットフォームを処理する方法について、満足のいく答えが見つかりません。そこで、垂直方向と水平方向に動く2つの異なるプラットフォームを操作する単純なプロトタイプを作成することにしました。何が機能しておらず、どのように修正するのかを分析して確認するための助けが欲しいです。以下の.flaファイルと.asファイルを、再生可能な.swfへのリンクと共に提出しました。 目標は、ヒーローがプラットフォームの上に立って、一緒に押したり、ジャンプしたり、下にジャンプしたりできる固体のオブジェクトであるかのようにプラットフォームと相互作用することです。 私のプロトタイプの問題はこれらです: 水平に動くプラットフォーム上に立って、移動せずに(キーに触れずに)、ヒーローはプラットフォームに沿って移動しますが、少し遅れてヒーローが少し後退します。 水平方向に動くプラットフォームの上に立ってジャンプすると、空中のプラットフォームに沿って動きます(一部のゲームはこのようにすることを好みますが、自然に感じられず、ここでは望まれません)。これは、ヒーローがプラットフォームからX軸の速度を保持していることが原因である可能性があります。 垂直方向に移動するプラットフォームの底部にジャンプするとき、プラットフォームが下に移動しているときに、プラットフォームの中に少し沈みます。主人公は一瞬衝突がなかったかのように貫通します。 垂直方向に移動するプラットフォームにジャンプすると、Y軸の速度が保持されるため、プラットフォームから降りると、より高速で落下します。保持された速度の速度で、+重力が追加されます(これは主に、プレイヤーが空中で凍結せずにプラットフォームに着地したときに、Y軸の速度を0にリセットする方法を理解できないためです)。 私は初心者のプログラマーなので、これを行うためのより良い方法があると確信しています。それらをすべて聞いてみたいと思います。タイルベースのゲームに移動プラットフォームを実装できるコードやその他の方法を改善する方法についてのアイデアは大歓迎です。結局、私は2Dプラットフォーマーで動くプラットフォームを処理するための確かな方法を見つけようとしています。 再生可能なSWF:http : //dl.dropbox.com/u/28271061/PlatformerhowtoFLA.html(矢印キーで移動、Xキーでジャンプ、Zキーで実行) ソースコードASファイル:http ://dl.dropbox.com/u/28271061/Platformerhowto.as SourcefileFLA:http : //dl.dropbox.com/u/28271061/PlatformerhowtoFLA.fla オンラインでパスティーを通してコードを読みたいだけなら:http : //pastie.org/2266764

2
プラットフォーマーゲームループでの操作の正しい順序
ロックマンエンジンで問題が発生しました。ゲームループの構造により、修正が非常に困難になっています。Rush Jet、または落下するプラットフォームでは、ロックマンは落下してもプラットフォームに接続されたままでいる必要があります。現在、私ができる最善の方法(彼を引き寄せる魔法の力場のような回避策に頼ることなく)は、プラットフォームが最初に落ち始めたときに彼が1フレーム落ちるようにすることです。しかし、これでも、衝突チェック中に落下プラットフォームが彼を引き下げる必要があります。この追加のステップがなければ、プラットフォームが下降するとき、彼は常に「揺らぎ」ます。 ゲームループ内のイベントの順序がこれを実現しています。こんなふうになります: ロックマンとラッシュジェットがしばらく水平に飛んでいます。 思考フェーズ:プレーヤーが押し下げる-プラットフォームは速度を下向きに設定することを決定します。 アクションフェーズ:プラットフォームが下に移動します。プレーヤーはこれを認識していません。 反応フェーズ:2つは衝突していないため、「拘束力」チェックは行われません。 次のフレームでは、ロックマンが落ちます。1フレーム後、重力が追いつき、再びプラットフォームに着地し、y速度を0にリセットします。 ループの基本的な順序がわかります。 前のフレームからの衝突やその他の変数を分析して、状態遷移やその他の調整を決定する思考フェーズ。 アクションフェーズ-全員が速度に従って移動します。 反応フェーズ-衝突チェック、位置を調整して修正します。これは、プラットフォームの移動などのエフェクトも処理します。プレーヤーをある程度押します。彼の速度の変更は、アクションフェーズの次のフレームで適用されます。 私はこれらの手順と他のさまざまな変更を並べ替えてみましたが、すべてのバグがあり、すべてが全体をさらに悪化させています。これらのことを正しくするためにエンジンに大幅な変更を加える必要がある場合は、時間を無駄にする前に、「適切な」方法が何かを知りたいと思います。 私が考えられる解決策の1つは、前のフレームでプラットフォームに触れていた人を見て、その人を引き寄せて実際に一緒に移動するという動きのステップになることを知っています。しかし、それは複雑すぎるようで、そのようなコンポーネント間で到達します。私のエンジンコードは、元のゲームよりもずっと複雑に感じられ、何か間違っていることを示唆しています。 それで、イベントの適切なシーケンスはありますか?プラットフォームに沿って物事を移動することについてここで別の質問がありますが、それは私の問題の原因となるイベントの問題の順序には対応していません。また、クラシックロックマンのゲームのやり方を実際に知っている人がいれば、それは大きな助けになります。 https://github.com/Tesserex/C--MegaMan-Engine/tree/master/Mega%20Manで、必要なだけ私のコードを見つけてください。CollisionComponentとMovementComponentが最も便利です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.