2013-10-05 44 views
0

这里的prolemBox2DWeb,PolygonShape.SetAsVector无法检测碰撞

enter image description here

如果我定义与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); 

任何人都知道这是界定?谢谢。

回答

0

SetAsVector方法需要凸多边形。但我认为你在这里设置的是一个凹陷的。

较新版本的Box2D支持从凹面生成凸多边形,但我不认为Box2DWeb支持此功能。

你可以通过将你的凹多边形分成两个凸多边形并创建两个夹具而不是一个来解决这个问题。

Wikipedia article about convex and concave polygons