• 利用Revolute Joint创建Motor


    在上一篇中记录了如何创建Revolute Joint,现在在上一篇的基础上来修改Revolute Joint,使之变为一个Motor(动力装置,马达)。

    主要代码:

    var distanceBall:Ball = new Ball(10, new Point(300, 240), new Point(0, 0), new CircleSprite(), _container);
    var revRect:Rect = new Rect(20, 100, new Point(300, 240), new Point(0, 0), new RectSprite(), _container);
    var revCircle:Ball = new Ball(10, new Point(300, 150), new Point(0, 0), new CircleSprite(), _container);
    var massData:b2MassData = new b2MassData();
    massData.mass = 0;
    revCircle.body.SetMass(massData);
    
    _revoluteJointDef.Initialize(revCircle.body, revRect.body, new b2Vec2(300/PhyOption.PHYSCALE,150/PhyOption.PHYSCALE));
    //motor可用
    _revoluteJointDef.enableMotor = true;
    //设置转动的速度,在此速度下,如果刚体无法越过其转动轨迹的最高点,则需要设置maxMotorTorque值更大。
    _revoluteJointDef.motorSpeed = Math.PI / 3;
    //maxMotorTorque值设置多大与转动速度无关,此值越大说明在当前转动速度下能越过轨迹最高点越容易。
    _revoluteJointDef.maxMotorTorque = 200;
    _revJoint = PhyOption.getInstance().world.CreateJoint(_revoluteJointDef) as b2RevoluteJoint;
    
    var distantJointDef:b2DistanceJointDef = new b2DistanceJointDef();
    var pos1:b2Vec2 = new b2Vec2();
    pos1.x = revRect.body.GetPosition().x;
    pos1.y = revRect.body.GetPosition().y + 50 / PhyOption.PHYSCALE;
    var pos2:b2Vec2 = new b2Vec2();
    pos2.x = distanceBall.body.GetPosition().x;
    pos2.y = distanceBall.body.GetPosition().y;
    distantJointDef.Initialize(revRect.body, distanceBall.body,pos1, pos2);
    _distanceJoint = PhyOption.getInstance().world.CreateJoint(distantJointDef) as b2DistanceJoint;
    

    先创建了一个球,用于创建一个Distance Joint。关键是第九到第十四行的设置。

    1。要设置为Motor必须设置enableMotor为真。

    2。设置转动的速度,单位是弧度每秒,此值直接反应转动的快慢。

    3。设置最大的转矩,单位是焦耳,即力*距离,合力作用的距离所做的功的最大值。如果此值过小,则可能导致刚体无法越过其预期转动轨迹的最高点,此种情况下设置大的转动速度也无济于事,只能设置大的转矩。

    具体的例子:

  • 相关阅读:
    关于近期
    Tips on Importons and Irradiance Particles in mental ray
    给她的歌
    Fatal In Code Generation Of Visual C++
    kdtree vs octree
    疯子的胜利——记6.18毕业晚会
    转凉
    事件与委托的匿名方法使用方法示例
    VS2008使用技巧
    硬链接和软连接的区别
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1736978.html
Copyright © 2020-2023  润新知