Unity で Rigidbody をアタッチしたゲームオブジェクトを、トルクによって回転させるスクリプトのサンプルです。入力した方向キーの向きに回転する力が加わります。
空の3Dプロジェクトを開いて Sphere オブジェクトを追加し、コンポーネントとして Rigidbody と以下のスクリプトをアタッチします。Sphere には、回転がわかりやすいように適当なテクスチャを付けています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 入力した方向キーの向きに回転するオブジェクトのスクリプト
public class RotationTest : MonoBehaviour
{
Rigidbody rb;
Vector3 torque;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.useGravity = false; // 重力を無効にする
}
void FixedUpdate()
{
// 入力がなければトルクを0にする
torque = Vector3.zero;
if (Input.GetKey("right"))
{
torque = Vector3.back;
}
if (Input.GetKey("left"))
{
torque = Vector3.forward;
}
if (Input.GetKey("up"))
{
torque = Vector3.right;
}
if (Input.GetKey("down"))
{
torque = Vector3.left;
}
// 現在の角速度
print(rb.angularVelocity);
// トルクを加える
rb.AddTorque(torque, ForceMode.Acceleration);
// 加える位置を帰る場合はこちら
// rb.AddForceAtPosition(torque, ForceMode.Acceleration, transform.position);
}
}
実行結果です。AddTorque によって十字キーの入力方向に回転する力が徐々に球体に加わります。

