1

iOSゲームでBulletPhysicsを使用しようとしています。デモが正常に機能するという点で、エンジンは正しくコンパイルされているようです。

私のゲームでは、プレイヤーの船といくつかの敵の船があります。それらはbtRigidBodyオブジェクトとbtCollisionObjectsとして定義されており、衝突にはbtSphereShapesを使用しています。

「速い」速度では、衝突は賢明に発生するように見えます-物事は衝突し、何も「奇妙な」状態にはなりません。速度が非常に遅く、プレイヤーの船が動かないオブジェクトに触れた場合、衝突が発生しますが、その後、プレイヤーの船は次の数フレームにわたって信じられないほどの速度で移動し、衝突した場所から遠くに見えます-完全に釣り合いが取れていません衝突前の移動速度。

物事を移動するには、フレームごとにsetLinearVelocity()を使用し、物理エンジンにチェックマークを付けてから、getMotionState()を使用してレンダリングコードを更新します。

問題の一部は、正しい質量を設定する方法や、何かに使用するのに最適な速度が何であるかを完全に理解していないことかもしれません。私は主に数字を貼り付けて、何が起こるかを見ています。

Bulletをこのように使用する必要がありますか?オブジェクトの質量を決定するためのガイドラインはありますか?(私は、衝突時に重いオブジェクトが軽いオブジェクトをより多く動かすと仮定するのは正しいですか)

4

1 に答える 1

0

私はまだ弾丸の専門家ではありませんが、setLinearVelocity. これはあくまでも初期状態で、世界に一度、何かを正しい方向に押し出したい場合は、衝動を与えてください。これは、目に見えないオブジェクトにぶつかったようなものなので、他の衝突と完全に互換性があります。フレームごとに速度を設定すると、物理エンジンの計算が完全に上書きされます。

2 つのオブジェクトが重なり合うと、それらが重なり合う量に応じた力で互いに反発することに気付きました。あなたの setVelocity メソッドがオブジェクトをオーバーラップさせていると思いますが、最終的に物理エンジンはこれを望ましくない方法で解決します。

私は宇宙船ゲームを作成しています。現在の移動方向をキャンセルするインパルスを作成し、船がまだ選択した最大速度で移動していない限り、新しい方向に移動するインパルスを作成します。

于 2012-10-20T08:36:03.327 に答える