box2dにおいて三角形のbodyを作りたいと考えています。
大まかな流れとしては、まずbodyDef、fixtureDefを作り、fixtureDefに形状の情報を持たせ(shapeプロパティのm_verticesプロパティで頂点を設定します)、bodyDef、fixtureDefから、CreateBody、CreateFixtureを使って、triangleを定義するという方針です。
最後から二番目の行まではエラーは出ないのですが、それ以降でエラーが出ます。
//三角形の生成 let vertices = [new b2Vec2(0,-10),new b2Vec2(-10,0),new b2Vec2(10,0)]; var bodyDef = new b2BodyDef; bodyDef.type = b2Body.b2_dynamicBody; bodyDef.position.Set(200 / PTM_RATIO, 10 / PTM_RATIO); bodyDef.userData = 'obj'; console.log(bodyDef) var fixDef = new b2FixtureDef; fixDef.density = 10.0; fixDef.friction = 0; fixDef.restitution = 0; fixDef.shape = new b2PolygonShape(); console.log(fixDef.shape) fixDef.shape.vertexCount = 3; console.log(fixDef.shape.vertexCount) console.log(fixDef.shape.m_vertices); for(i=0;i<3;i++){ fixDef.shape.m_vertices[i] = vertices[i]; } console.log(fixDef.shape.m_vertices); console.log(fixDef); var triangle = world.CreateBody(bodyDef); console.log(triangle); console.log(triangle.b2Body) triangle.CreateFixture(fixDef); console.log(triangle);
どなたかご教授くださると幸いです。
*追記いたします。
例えば下記のようなコードでpolygonShapeを作るとします。その際に、最終行のVertexCountの値がundefinedになるので、vertexCountを設定しなくてはならないはずですが、console.log(polygonShape)をコンソールにて調べても、メソッドとして、vertexCount()が見当たらないのです。
vertexCountを設定するためには、vertexCount()というメソッドがあらかじめpolygonShapeに登録されている必要があると思うのですが・・・・。
let polygonShape = new b2PolygonShape() console.log(polygonShape); console.log(polygonShape.GetVertexCount()); for(i=0;i<3;i++){ polygonShape.m_vertices[i] = vertices[i]; } console.log(polygonShape); console.log(polygonShape.GetVertexCount());
回答1件
あなたの回答
tips
プレビュー