带物理的Unity 2D旋转平台

时间:2015-10-24 23:24:35

标签: unity3d 3d rotation 2d physics

在Unity中,我想创建一个像螺旋桨一样旋转的平台。当它击中一个物体时,我希望该物体沿着合理的方向飞行。如果我只是每帧更新对象的旋转,则对象往往会粘在平台上并以更高的速度通过它。我认为Unity的物理将是最好的解决方案 - 如何以恒定的速度旋转平台,以便它可以做我想要的?此外,如何在没有加速或减速的情况下开始和停止旋转?我正在使用C#。

1 个答案:

答案 0 :(得分:0)

如果您希望将Unity的物理特性纳入您的平台行为,但又不想处理增加力/扭矩以改变其转速,请考虑使用Rigidbody.angularVelocity 。这样,您也可以立即开始和停止轮换(当您使用FixedUpdate()时使用RigidBody。)

所以你的代码可能如下:

Vector3 activeVelocity = new Vector3(0, 10, 0);
bool isStopped = false;
RigidBody rBody;

void Start() {
    rBody = GetComponent<Rigidbody>();
}

void FixedUpdate() {
    if (!isStopped){
        rBody.angularVelocity = activeVelocity;
    }
    else{
        rBody.angularVelocity = Vector3.zero;
    }
}

public void ActivateRotation() {
    isStopped = false;
}

public void FreezeRotation() {
    isStopped = true;
}

希望这有帮助!如果您有任何问题,请告诉我。