私はbox2dでlibgdxを使って私の最初のゲームに取り組んでいます。私はオブジェクトをテストするためにデバッグレンダラーを使用しています。私はオブジェクトのような車をいくつか作りました。各車は本体が6ポイント(長さ約1メートル、高さ0.7メートル)の大きな多角形で、回転ジョイントで2つの車輪が取り付けられています。Libgdx box2Dの衝突がいくつかのボディでは失敗する
メインカーには大砲と機関銃が取り付けられており、回転ジョイントを介して取り付けられています。
私が直面している問題は、車の大部分が意図したとおりに衝突していないことです。 2台の車がお互いを打つとき、彼らはこのように、重複している:
いくつかの注意:
- ホイールと衝突罰金をやっている大砲(小さい形状)。車輪が触れたときの体は、私は、コードを経由して衝突を検出した場合、衝突が実際に
- が起こっている私は小さなオブジェクト(マシンガンから発射弾丸)でこれを試みたが、私は、オブジェクトの「isBulletを設定
- を停止しています「私は別の記事で見たように、真のプロパティ(not proper collision in box2d)が、同じ結果を持っていた(弾丸が赤い丸で囲まれている):
ここで私が作成するために使用しているコードです体:
protected Body createBody(Material material, Shape shape, BodyType type, WorldWrapper world)
{
BodyDef bodyDef = new BodyDef();
bodyDef.type = type;
bodyDef.position.set(initialPosition);
Body body = world.createBody(bodyDef);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.density = this.material.getDensity();
fixtureDef.friction = this.material.getFriction();
fixtureDef.restitution = this.material.getRestitution();
fixtureDef.shape = shape;
body.createFixture(fixtureDef);
return body;
}
車は、このように構築され、車輪の回転関節、上のモーターを使用して前方に行く:私は、次の値を使用してい
public void goForward()
{
for (RevoluteJoint joint : wheelJoints)
{
joint.enableMotor(true);
joint.setMotorSpeed(-this.engineSpeed);
joint.setMaxMotorTorque(this.engineTorque);
}
}
:
Density = 2500;
Restitution = 0;
Friction = 0.1;
BodyType = Dynamic;
私は1/60を使用しています秒ワールドステップ、velocityIterations = 6、positionIterations = 2
私はここで何が不足しているのでしょうか?
ありがとう!私は今日それを試みます。 Btw私は3週間前にこのプロジェクトを作成しました。セットアップの実行ファイルにlibgdxの更新機能を使用しました。最近の変更ですか? – Charbel
私はGitHubで見たものから、3月22日に変更が追加されました。最新のlibgdxリリースビルドは3月16日からのものですので、現在はナイトリーズにしかありません。 – Shinni
ポリゴンを凸型に変更しましたが、それは事実上問題でした。私は2つの四角形の提案を使用します。ありがとう! – Charbel