Box2Dでプレイヤーと発射物の衝突を予測するにはどうすればよいですか?


8

物理エンジンとしてBox2Dを使用して、リアルタイムのシューティングゲームを作成しています。ゲームプレイは主に、Angry Birdsのような軌道に関するものです。スローモーションエフェクトを作成し、プレーヤーが倒されたときにカメラをプレーヤーに移動したいのですが、実際に衝突が発生する前に、石が空中にあるときにエフェクトを開始する必要があります。

損傷の大きさは衝突時にのみインパルスに基づいて計算されます。これはリアルタイムゲームであるため、プレイヤーはラグなくキャラクターの物理体を動かすことができなければなりません。

どうすれば彼らの死を予測できますか?可能ですか?レイキャストすることはできますが、別のオブジェクトが移動してそのパスをブロックするとどうなりますか?

ここに画像の説明を入力してください


1
理論上の注記:非決定論的システムの将来は、定義上予測不可能です。シュレーディンガーの猫を見てください。精神的に「猫」を「プレイヤーキャラクター」に置き換えています。
あんこ

1
@Anko非常に興味深いアイデア!私はそれを試したことはありません。しかし、プレイヤーはまだ移動できるので、どこに行くか、どこまで行くかは予測できません。しかし、プレーヤーの移動速度はわかっているので、石が十分に近くなっても、見逃さないでしょう...
Arch1tect

1
(1/2)IMOレイキャストを使用して衝突が発生する可能性がかなり高いかどうかを確認し、カメラのズームを開始してゲームの速度を落とすと、はるかに興味深いものになります。すべてのフレームでレイキャストを再実行して、石がまだ衝突コース上にあるかどうかを確認します。石が遮られた場合、カメラは通常の状態にズームバックするだけですが、フレームごとに衝突が発生する可能性があるため、カメラをもう少しズームします。
NauticalMile 2014

1
(2/2)これは1石で2羽の鳥を殺します(単語の遊びは意図されていません)。 (または放牧)ヒット。実際、プレーヤーがカメラがズームインしてゲームが遅くなるたびに彼が運命を失うことを知っている場合、あなたの効果は退屈になると私は主張することができます。彼はすぐに「アニメーション」をスキップして再試行したいと思うでしょう。しかし、彼が石を回避できる可能性がある場合、あなたは彼が彼の爪を噛んで結果を見るために待っているに違いない。
NauticalMile 2014

1
(1/2)@NauticalMileねえ、それもとても良い考えです!! プレーヤーが頻繁にヒットされるため、ゲームに直接適用されない可能性があります。ズームインとスローモーションにより、進行中のゲームが過度に中断される可能性があります。
Arch1tect 2014

回答:


2

なぜサウンド/スローダウンエフェクトの軌跡を計算するのですか?

スクイーズの被害者に近づくと、カメラの速度を落とし、エフェクトをセクションに分割する動作を分割すると、基本的には近接している状態でそれらを再生できます。

これは頭​​に浮かぶ良い例です。Peggleで採用されている近接スローダウンエフェクト

ボールがペグに近づき、減速し始めます。これは実際には完全に近接しており、軌道は含まれていません。最後のペグに十分近づくと、ドラムロールが開始され、ゲームプレイが遅くなります。ペグに当たらず、範囲外になると、「Awww .. :(」と聞こえ、すべて正常に戻りますが、それが衝突した場合、本格的な序曲と勝利画面が表示されます。

これは、プレーヤーを「聖なる牛、もうすぐ撃たれた!」インパクトの前に再生されるデスカムの起動時のサウンド/エフェクトがある場合、石が十分近くにあるときにこれをトリガーするだけで、プレーヤーがどの方向に最大速度で動いても、音が大きく変化します。 。

あなたの岩が落下していて、プレーヤーから約4mまでスローダウン効果を開始したいとします。スローダウンを開始することから始め、カメラを動かしてプレーヤーに焦点を合わせます。スローダウンフォーカスを終了すると、プレーヤーは通常どおり続行します。

ここに画像の説明を入力してください

これは基本的に、Peggleがスローダウン効果を処理してゲームの終わりの音楽をトリガーする方法であり、カメラ/ロック/フワフワした先制のデスシーンシナリオでの使用に完全に実行可能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.