我正在制作一个游戏,你骑自行车穿过一些山丘。我有一个问题,就是在自行车车架和它的车轮之间建立关节 - 关节以某种方式拉伸,它们不牢固。
我尝试了不同设置的不同关节,但总是发生。我想要没有摊销,只是我的自行车和车轮之间的紧密关系。
这是我现在使用的设置:
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);
我做错了什么?如何获得那些“坚定”的关节?
答案 0 :(得分:4)
可能是解决方案:
缩放世界,使移动物体的大小在0.1到10米之间。 Box2D手册说:
连续碰撞不能处理关节。所以你可能会在快速移动的物体上看到关节伸展。
如果使用不良缩放,则速度可能非常高。
增加位置和速度迭代次数。 Box2D手册说:
Box2D的建议迭代计数为8表示速度,3表示位置。您可以根据自己的喜好调整此数字,请记住,这需要在速度和准确度之间进行权衡。
缩短时间步长(并增加fps,以保持物理速度正常)。根据我的经验,时间步长1/60秒是好的,1/30不太好,但仍然有效,1/20相当不稳定,并且只能模拟简单的模型。
P.S。你的地面体不是最佳的:)固定装置的数量可以减少。如果您为移动平台编程,这一点尤为重要。