dal*_*nic 1 java android box2d andengine
我正在做一个游戏,在那里你骑自行车穿过一些山丘。我在自行车车架和车轮之间创建接头时遇到问题 - 接头以某种方式拉伸,它们不牢固。
我尝试了一些不同设置的不同关节,但它总是发生。我不想要摊销,只想要我的自行车和它的轮子之间的牢固连接。
这是设置,我现在使用:
mFrame = new Frame(pX, pY, pPhysicsWorld);
mWheelFront = new Wheel(pX + 47.0f, pY - 28.0f, pPhysicsWorld);
mWheelRear = new Wheel(pX - 53.0f, pY - 28.0f, pPhysicsWorld);
this.attachChild(mWheelFront);
this.attachChild(mWheelRear);
this.attachChild(mFrame);
final RevoluteJointDef revoluteJointDefFront = new RevoluteJointDef();
revoluteJointDefFront.initialize(this.mFrame.getBody(), this.mWheelFront.getBody(), this.mWheelFront.getBody().getWorldCenter());
revoluteJointDefFront.collideConnected = false;
revoluteJointDefFront.maxMotorTorque = 100f;
pPhysicsWorld.createJoint(revoluteJointDefFront);
final RevoluteJointDef revoluteJointDefRear = new RevoluteJointDef();
revoluteJointDefRear.initialize(this.mFrame.getBody(), this.mWheelRear.getBody(), this.mWheelRear.getBody().getWorldCenter());
revoluteJointDefRear.collideConnected = false;
revoluteJointDefRear.maxMotorTorque = 100f;
pPhysicsWorld.createJoint(revoluteJointDefRear);
Run Code Online (Sandbox Code Playgroud)
我做错了什么?如何获得那些“牢固”的关节?
可能的解决方案:
缩放世界,使移动物体的大小在 0.1 到 10 米之间。Box2D 手册说:
连续碰撞不处理关节。因此,您可能会在快速移动的物体上看到关节拉伸。
如果您使用不好的缩放比例,那么速度可能会非常高。
增加位置和速度迭代次数。Box2D 手册说:
Box2D 的建议迭代次数为 8 次速度和 3 次位置。您可以根据自己的喜好调整此数字,但请记住,这需要在速度和准确性之间进行权衡。
缩短时间步长(并增加 fps,以保持物理速度正常)。根据我的经验,时间步长 1/60 秒不错,1/30 不太好,但仍然有效,1/20 相当不稳定,只能模拟简单模型。
ps 您的地面主体不是最佳的:) 固定装置的数量可能较少。如果您为移动平台编程,这一点特别重要。