【Unity】GameObject にトルクを加えて回転させる

DEVELOP, Unity

回転の力を加えるには AddTorque や AddRelativeTorque を使います。加速度的に回転させたい時などに有効です。

private void Update()
{
    var rigidbody = gameObject.GetComponent();
    var horizonPower = Input.GetAxis("Horizontal");
    var verticalPower = Input.GetAxis("Vertical");
 
    // 相対的にトルクをかける。
    rigidbody.AddRelativeTorque(new Vector3(0, horizonPower, -horizonPower) * 2.0f);
    rigidbody.AddRelativeTorque(new Vector3(verticalPower, 0, -verticalPower) * 2.0f);
 
    // 水平を保つ。
    var left = transform.TransformVector(Vector3.left);
    var horizontal_left = new Vector3(left.x, 0f, left.z).normalized;
    rigidbody.AddTorque(Vector3.Cross(left, horizontal_left) * 6.0f);
}

結果

上下左右キーを押下すると押した方向へトルクが加わり回転します。

Posted by kazupon