我正在尝试创造漂浮在太空中的旋转形状。环境中仍然存在重力,但是它不应该影响这些平台对象,因为它们是静态的(对吗?)。虽然如何应用常量 angularVelocity 呢?当我为它赋值时,它似乎不适用,可能是因为它是静态的。
最简单的例子是旋转齿轮,一个自动 teeter-totter (不受外力影响)。我想要制作的是一个旋转的矩形,它可以干扰用户控制的球。
我是否需要使用关节将其固定到位?如何指定不受动态对象影响的细节?
感谢任何有此答案的人!
答案 0 :(得分:0)
实际上,找到了一个很好的资源网站,展示了几个常见的例子: http://blog.thestem.ca/archives/102
重要的是要注意,关节本身几乎没用(或者甚至只附加一个b2Body)。
它总是要求两(2)个主体与它的.body1和.body2属性相关联。因此,为了将对象“固定”到世界/背景,您必须创建一个“虚拟”身体作为两个身体候选者之一,而另一个将是您想要的移动对象。 电机速度和扭矩是使其“旋转”的关键,而不是在更新方法中控制angularVelocity或直接操纵车身角度。
var pivotDef:b2BodyDef = new b2BodyDef();
pivotDef.position.SetV( _b2body.GetWorldCenter() );
_b2bodyPivot = b2WorldInst.CreateBody( pivotDef );
var jointDef:b2RevoluteJointDef = new b2RevoluteJointDef();
jointDef.Initialize( _b2bodyPivot, _b2body, _b2bodyPivot.GetPosition() );
jointDef.motorSpeed = 1;
jointDef.maxMotorTorque = 10000000;
jointDef.enableMotor = true;
jointDef.enableLimit = false;
var joint:b2RevoluteJoint = b2WorldInst.CreateJoint( jointDef ) as b2RevoluteJoint;
-
希望能够节省其他Flash物理学家一些时间来解决这个问题:)