2

我正在尝试创建漂浮在太空中的旋转形状。环境中仍然存在重力,但是它不应该影响这些平台对象,因为它们是静态的(对吗?)。我怎样才能对它应用一个恒定的angularVelocity呢?当我为其赋值时,它似乎并不适用,可能是因为它是静态的。

最简单的例子是旋转齿轮,自动跷跷板(不受外力影响)。我要做的只是一个旋转的矩形,它可能会干扰用户控制的球。

我需要使用关节将其固定到位吗?如何指定不受动态对象影响的细节?

感谢任何对此有答案的人!

4

1 回答 1

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 物理学家节省一些时间来解决这个问题 :)

于 2011-02-24T17:51:29.487 回答