我正在尝试创建漂浮在太空中的旋转形状。环境中仍然存在重力,但是它不应该影响这些平台对象,因为它们是静态的(对吗?)。我怎样才能对它应用一个恒定的angularVelocity呢?当我为其赋值时,它似乎并不适用,可能是因为它是静态的。
最简单的例子是旋转齿轮,自动跷跷板(不受外力影响)。我要做的只是一个旋转的矩形,它可能会干扰用户控制的球。
我需要使用关节将其固定到位吗?如何指定不受动态对象影响的细节?
感谢任何对此有答案的人!
我正在尝试创建漂浮在太空中的旋转形状。环境中仍然存在重力,但是它不应该影响这些平台对象,因为它们是静态的(对吗?)。我怎样才能对它应用一个恒定的angularVelocity呢?当我为其赋值时,它似乎并不适用,可能是因为它是静态的。
最简单的例子是旋转齿轮,自动跷跷板(不受外力影响)。我要做的只是一个旋转的矩形,它可能会干扰用户控制的球。
我需要使用关节将其固定到位吗?如何指定不受动态对象影响的细节?
感谢任何对此有答案的人!
实际上,找到了一个很棒的资源站点,展示了一些常见的示例: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 物理学家节省一些时间来解决这个问题 :)