我正在尝试学习Box2d和EaselJS。到目前为止,我一直在使用" debug" Box2d的形状。如何从EaselJS制作自定义形状,启用物理?例如,我有以下代码在屏幕上产生随机球。
var fixDef = new box2d.b2FixtureDef();
fixDef.density = 1;
fixDef.friction = 0.5;
fixDef.restitution = 0.5;
var bodyDef = new box2d.b2BodyDef();
bodyDef.type = box2d.b2Body.b2_dynamicBody;
bodyDef.position.x = Math.random()*800/SCALE;
bodyDef.position.y = 0;
fixDef.shape = new box2d.b2CircleShape(Math.random()*100/SCALE);
world.CreateBody(bodyDef).CreateFixture(fixDef);
如何使用EaselJS shape对象?
谢谢!
答案 0 :(得分:1)
对于要显示的每个DisplayObject
(Shape,Bitmap,ect ..),您需要一个自己的b2dObject。然后,每次更新舞台(或你的b2dWorld)时,你必须检索b2dObject的位置和旋转并将其应用到你的形状 - >完成。
你可以在这里找到一个很好的例子:https://github.com/CreateJS/sandbox/blob/master/EaselJS_Box2dWeb
你需要的是这样的:
var pt = body.GetPosition();
var sprite = ball.sprite;
sprite.x = pt.x*WORLD_SCALE;
sprite.y = pt.y*WORLD_SCALE;
sprite.rotation = body.GetAngle()/Math.PI*180;