【问题标题】:AndEngine Box2d - how to avoid joint "stretching"?AndEngine Box2d - 如何避免关节“拉伸”?
【发布时间】:2013-07-18 11:09:38
【问题描述】:

我正在制作一款游戏,您可以在其中骑自行车穿越一些山丘。我在自行车车架和车轮之间创建接头时遇到问题 - 接头以某种方式拉伸,它们不牢固。

我尝试了一些具有不同设置的不同关节,但它总是会发生。我不想要摊销,只想要我的自行车和它的轮子之间的牢固连接。

这是我现在使用的设置:

    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);

我做错了什么?如何获得那些“牢固”的关节?

【问题讨论】:

    标签: java android box2d andengine


    【解决方案1】:

    可能的解决方案:

    1. 使自行车车身和车轮的质量差别不大。它们也不应该很大。根据 box2d 手册,当质量比超过 10:1 时稳定性会降低。你的问题很可能就在那里。
    2. 缩放世界,使移动物体的大小在 0.1 到 10 米之间。 Box2D 手册说:

      连续碰撞不处理关节。因此,您可能会看到快速移动的物体上的关节拉伸。

      如果您使用的缩放比例不好,那么速度可能会非常高。

    3. 增加位置和速度迭代次数。 Box2D 手册说:

      Box2D 的建议迭代次数是速度为 8 次,位置为 3 次。您可以根据自己的喜好调整此数字,但请记住,这需要在速度和准确性之间进行权衡。

    4. 缩短时间步(并增加 fps,以保持物理速度正常)。根据我的经验,时间步长 1/60 秒很好,1/30 不太好,但仍然可以工作,1/20 相当不稳定,只能模拟简单的模型。

    附言您的地面身体不是最佳的:) 固定装置的数量可能会更少。如果您为移动平台编程,这一点尤其重要。

    【讨论】:

    • 非常感谢您!玩大众就行了! ;) 是的,我知道这不是最佳的,但我在计算机上使用的测试质量超过了最高质量,而且我仍然有 60fps,但对于手机来说,细节会少几倍。再次感谢!
    猜你喜欢
    • 2015-02-15
    • 2011-09-06
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2010-10-14
    • 2013-04-17
    • 1970-01-01
    相关资源
    最近更新 更多