【Unity】GameObject にトルクを加えて回転させる
回転の力を加えるには 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);
}
結果
上下左右キーを押下すると押した方向へトルクが加わり回転します。