2013-03-20 60 views
0

即时通讯尝试在box2d中使用棱镜关节创建移动平台,所有创建的都是一个盒子,并且没有明显的关节,我做错了什么?这里是我的代码Box2d As3棱镜接头不起作用?

 var prismaticJoint:b2PrismaticJoint; 
     ... 
     { 
     ... 
     BodyDef.position.Set(0/RATIO, 0/RATIO); 
     floorDef.SetAsBox(250/RATIO, 10/RATIO); 

     fixtureDef.shape = floorDef; 
     fixtureDef.friction = 0.5; 
     fixtureDef.density = 0.5; 
     fixtureDef.restitution = 0; 

     movePlatformBody = PhysiVals.world.CreateBody(BodyDef); 
     movePlatformBody.CreateFixture(fixtureDef); 


     var prismaticJointDef:b2PrismaticJointDef = new b2PrismaticJointDef(); 
     prismaticJointDef.Initialize(body, movePlatformBody, movePlatformBody.GetWorldCenter(), new b2Vec2(0,1)); 
     prismaticJointDef.enableLimit = true; 
     prismaticJointDef.enableMotor = true; 
     prismaticJointDef.lowerTranslation = 0; 
     prismaticJointDef.maxMotorForce = 100; 
     prismaticJointDef.motorSpeed = 1; 
     prismaticJointDef.upperTranslation = 270/PhysiVals.RATIO; 
     PhysiVals.world.CreateJoint(prismaticJointDef); 
     //prismaticJoint = PhysiVals.world.CreateJoint(prismaticJointDef as b2JointDef) as b2PrismaticJoint; 

我试过2种方式在世界上创建它,我不知道使用哪一个。如何在box2d中创建移动平台?感谢您抽出时间来阅读。

回答

1

尝试修改您的初始化语句。将第一个参数设置为要移动的主体(平台),将第二个参数设置为静态主体(世界),第三个参数为平台中心。

我写了一个关于Box2D关节的非常流行的教程,其中带有源代码的棱镜关节的示例,因此如果您仍然遇到问题 Tutorial,也可以看看。

+0

感谢您的回复!我其实在看过你的教程,并且正在使用它和其他人。我试过,但它没有工作,平台只保持静态,不移动,即使在调试绘制有任何线条指示联合或任何东西,非常感谢您的帮助 – Farjuan 2013-03-20 02:33:58

+0

尝试更换不是意味着移动(作为锚点)与身体PhysiVals.world.GetGroundBody()? – Allan 2013-03-20 03:25:54

+0

是的,试过了,似乎还没有工作,我试图让一些工作像[本] [http://www.actionscript.org/resources/articles/1087/12/Getting-Started-with -Box2D/Page12.html)教程,但我还没有接近,再一次,结果只是一个静态框,我试图改变密度和其他值,但它只是保持静态 – Farjuan 2013-03-20 04:24:15