4つの壁の間で跳ねる円を実装しようとしました。しかし、その円の初速度ベクトルが何であるかは問題ではありません。しばらくすると、常に水平または垂直に移動することになります。それは正常な動作ですか?そうでない場合、どうすれば修正できますか?
ご回答ありがとうございます。
壁:
BodyDef bd = new BodyDef();
Body body = w.createBody(bd);
PolygonDef sd = new PolygonDef();
sd.density = 0.0f;
sd.friction = 0.01f;
sd.restitution = 1f;
sd.setAsBox(250, 10f, new Vec2(250, 1), 0);
body.createShape(sd);
sd.setAsBox(250, 10f, new Vec2(250, 499), 0.0f);
body.createShape(sd);
sd.setAsBox(250, 10f, new Vec2(1, 250), (float) (Math.PI / 2));
body.createShape(sd);
sd.setAsBox(250, 10f, new Vec2(499, 250), (float) (Math.PI / 2));
body.createShape(sd);
// サークル :
BodyDef bd = new BodyDef();
bd.position.set((float) (Math.random() * 400 + 50), (float) (Math.random() * 400 + 50));
//bd.isBullet = true;
Body body = w.createBody(bd);
Vec2 v = new Vec2((float) (Math.random() * 20 - 10), (float) (Math.random() * 20 - 10));
System.out.println(body + " " + v);
body.setLinearVelocity(v);
body.setAngularVelocity(0.1f);
CircleDef sd = new CircleDef();
sd.radius = (float) (Math.random() * 40 + 5);
sd.density = 15.0f;
sd.restitution = 0.8f;
body.createShape(sd);
body.setMassFromShapes();