在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);
}
}
|