4

私は、水がパズルを解いたり、他の画面要素と相互作用したりするために使用できるプロパティとして機能するゲームに取り組んでいます。私は、水がどのようにしてそのような流動的な物理的相互作用を得ることができたかを学ぶことに非常に興味があります。

パーティクルを使用したBox2Dでそれを実現できますか?

4

1 に答える 1

7

あなたが話しているゲームのビデオを見た後(そしてあなたが特定のゲームについて話していると言われた後)、私はメタボールシミュレーションがうまくいくかもしれないと思いました。

「私の水のメタボールはどこにありますか」とグーグルで検索すると、LudumDareエントリでこの正確なゲームを実装する方法の説明が見つかりました。

http://www.ludumdare.com/compo/?p=104952&preview=true

パーティクルシミュレーターが最適ですが、それをゲームに統合するには、私が持っていなかった貴重な時間がかかります。そこで、プールと障害物、そしてかなり高密度の小さな滑りやすいボールを大量に作成しました。摩擦、減衰、およびわずかな反発は必要ありません。フルスクリーンサイズが48mx32mの場合、1つのボールの半径は約0.25mです。

1つの場所に頻繁にクランプする多くの動的ボディをシミュレートすることは、非常に重い操作です。これを考慮する必要があります。このため、私は本当に不正確な物理設定を使用しました。速度と位置のサブステップが1つだけで世界をステップしました。また、物理ステップを30 / sに固定しました。(競技後、20で十分であることに気付きました)固定時間ステップを処理する場合、物理がステップされていないがレンダリングが行われている場合は、常に位置を補間または外挿する必要があります。外挿を選択しました。これは簡単に引き出すことができます。

RenderPos = PhysicalPos + Velocity * TimeAccumulator

次に、レンダリングは、小さなボールではなく流動的なものであるとプレイヤーを騙して信じさせる方法であると説明します。それらは、メタボールレンダリングの形式を使用します。

私の方法は、水滴をオブジェクトの物理サイズの2倍の半径を持つメタボールとしてレンダリングすることでした。メタボールを作成する最も速い方法は、中央が不透明で、エッジが滑らかな円形のグラデーションで完全に透明なスプライトでした。

于 2012-04-18T17:41:39.893 に答える