[Unity] AddTorqueでRigidbodyを入力キーの方向に回転させるスクリプト

2020年12月21日

Unity で Rigidbody をアタッチしたゲームオブジェクトを、トルクによって回転させるスクリプトのサンプルです。入力した方向キーの向きに回転する力が加わります。

UnityでSphereオブジェクトを作成

空の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 によって十字キーの入力方向に回転する力が徐々に球体に加わります。

参考

Rigidbody-AddTorque - Unity スクリプトリファレンス

Rigidbody-AddForceAtPosition - Unity スクリプトリファレンス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です