0

これが問題です

ここに画像の説明を入力

SetAsBox で野球のバットを定義しても問題ありません。

SetAsVector を使用して定義すると、この種の奇妙なことが起こります

this.view = new createjs.Bitmap("hammer.png");
this.view.regX = 0;
this.view.regY = 0;

var fixDef = new box2d.b2FixtureDef();
fixDef.density = 5.0;
fixDef.friction = 0.5;
fixDef.restitution = 0.8;
var bodyDef = new box2d.b2BodyDef();
bodyDef.type = box2d.b2Body.b2_kinematicBody;
fixDef.shape = new box2d.b2PolygonShape();
var vertices = []
vertices.push(new box2d.b2Vec2(30/SCALE, 0/SCALE));
vertices.push(new box2d.b2Vec2(14/SCALE, 0/SCALE));
vertices.push(new box2d.b2Vec2(17/SCALE, 10/SCALE));
vertices.push(new box2d.b2Vec2(17/SCALE, 100/SCALE));
vertices.push(new box2d.b2Vec2(0/SCALE, 290/SCALE));
vertices.push(new box2d.b2Vec2(12/SCALE, 300/SCALE));
vertices.push(new box2d.b2Vec2(32/SCALE, 300/SCALE));
vertices.push(new box2d.b2Vec2(44/SCALE, 290/SCALE));
vertices.push(new box2d.b2Vec2(27/SCALE, 100/SCALE));
vertices.push(new box2d.b2Vec2(27/SCALE, 10/SCALE));
fixDef.shape.SetAsVector(vertices, 10);
bodyDef.position.x = 600 / SCALE;
bodyDef.position.y = 300 / SCALE;
this.view.body =  world.CreateBody(bodyDef);
this.view.body.CreateFixture(fixDef);

これについて知っている人はいますか?ありがとう。

4

1 に答える 1

0

メソッド SetAsVector は凸多角形を想定しています。しかし、ここで設定しようとしているのは凹面だと思います。

Box2D の新しいバージョンは、凹面ポリゴンから凸面ポリゴンを生成することをサポートしていますが、Box2DWeb はこれをサポートしていないと思います。

これを解決するには、凹面ポリゴンを 2 つの凸面ポリゴンに分割し、1 つではなく 2 つのフィクスチャを作成します。

凸多角形と凹多角形に関するウィキペディアの記事

于 2014-05-16T14:07:20.217 に答える