zoukankan      html  css  js  c++  java
  • 利用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。设置最大的转矩,单位是焦耳,即力*距离,合力作用的距离所做的功的最大值。如果此值过小,则可能导致刚体无法越过其预期转动轨迹的最高点,此种情况下设置大的转动速度也无济于事,只能设置大的转矩。

    具体的例子:

  • 相关阅读:
    建议使用nullptr而不是NULL
    二叉树的遍历(三种遍历方式,前中后序;递归,栈,迭代实现)
    455.分发饼干Easy Leetcode
    java 报错:Implicit super constructor Point() is undefined. Must explicitly invoke another constructor
    求解字符串所包含子串的个数
    数组去重
    vue watch
    mysql设置指定字段不能为负数
    Shell脚本监控服务存活状态及异常,并触发钉钉webhook报警
    Shell常用语法
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1736978.html
Copyright © 2011-2022 走看看