0

画面中央(プレイヤー)を横スクロールして、敵が左または右から連続して現れるゲームを開発しています。

敵を作成し、この方法で線形速度を右(または左)に設定します。getBody.setLinearVelocity(v * this.getDireccion()、0);

次に、敵が別の敵またはプレイヤーと衝突したときに、方向を変えたり(スライドして戻ったり)、速度を遅くしたり速くしたりすることがあります。常に同じLinearVelocityが必要です。この敵がプレイヤーや別のモンスターと衝突している場合は、停止したり、遅くしたり、速くしたりしないでください...同じ速度と方向です。

誰かがこれで私を助けることができますか?申し訳ありませんが私の英語。

4

2 に答える 2

1

ContactListenerを作成し、 postSolveコールバックメソッドを使用して体の速度をリセットするのはどうですか。
衝突後、Box2Dはフィクスチャのオーバーラップを回避するためにインパルスを生成します。そのため、体の速度が変更されます。これは衝突を説明する良いチュートリアルです、この助けを願っています。

于 2012-10-22T13:11:15.200 に答える
1
FixtureDef FIXDEF = PhysicsFactory.createFixtureDef(final float pDensity, final float pElasticity, final float pFriction);

1)「方向転換」を避けるために、摩擦を0に設定します。

2)常に同じLinearVelocityを取得するには、Elasticityを1に設定し、その後、ゲームループで、必要に戻すのではなく、速度が変更されているかどうかを確認します。または、「applyForce」を使用できます。applyForceの例をここで確認できます。

PSあなたはそのようなものを使うことができます.createFixtureDef(1.0f, 1.0f, 0.0f)

私も同様の問題を抱えていました。同じ高さに跳ね返るにはボールが必要でした。私がしたこと?以前の速度を思い出しました。そして、ボールが地面に当たったとき(そして速度が変更されたとき)。prevVel *(-1)バウンスする前の以前の記憶速度を設定しました(ただし、符号は反対です)。

于 2012-10-22T05:15:22.937 に答える