| 在Unigine中BodyRigid类似于Unity中的RigidBody,哈哈,这名字起的。 说几个BodyRigid中的方法: //给刚体中心增加一个力 BodyRigid.AddForce(vec3 force); //给刚体增加一个特定方向的冲量,就是增加一个持续一帧时间的用于移动的力,感觉这个东西比上面的AddForce好,因为感觉是抹平了不同帧率的结果。 BodyRigid.AddLinearImpulse ( vec3 impulse ) //给刚体增加一个特定方向的角度冲量,就是增加一个持续一帧时间的用于旋转的力。 BodyRigid.AddAngularImpulse ( vec3 impulse ) 好了,范例代码来了。 using Unigine;
[Component(PropertyGuid = "26fe5ee5d5860300c46f1a5f0ddc24322feab5e9")]
public class PhysicsController : Component
{
        float speed =50f;
        float aSpeed = 0.5f;
        BodyRigid rigid;
        private void Init()
        {
                rigid = node.ObjectBodyRigid;
        }
        private void Update()
        {
                if (Input.IsKeyPressed(Input.KEY.W))
                        rigid.AddLinearImpulse(node.GetWorldDirection(MathLib.AXIS.Y) * speed*Game.IFps);
                if (Input.IsKeyPressed(Input.KEY.S))
                        rigid.AddLinearImpulse(node.GetWorldDirection(MathLib.AXIS.NY) * speed * Game.IFps);
                if (Input.IsKeyPressed(Input.KEY.A))
                        rigid.AddAngularImpulse(node.GetWorldDirection(MathLib.AXIS.Z) * aSpeed * Game.IFps);
                if (Input.IsKeyPressed(Input.KEY.D))
                        rigid.AddAngularImpulse(node.GetWorldDirection() * aSpeed * Game.IFps);
        }
}
 |