Help us understand the problem. What is going on with this article?

【Unity】オブジェクトを進行方向へ緩やかに回転させる方法【サンプルあり】

More than 1 year has passed since last update.

Unityで進行方向に対し、緩やかに回転させる方法をご紹介します。

Unityの回転方法は少しばかり複雑ですが、標準関数を使えば、意外とすんなりできたりします!

緩やかに進行方向へ回転させる際の注意点も添えてありますので、参考にしていただけますと幸いですm(_ _)m

回転させる前の注意点

オブジェクトの向きはz軸を正面、y軸を上にする

まず準備として、オブジェクトをz軸を正面、y軸を上に向くように設定しましょう。
スクリーンショット_2019-02-12_13_58_50.png

Blenderといったモデリングツールでモデルをインポートする時などご注意ください!

モデルの原点を中心にする

モデルの原点を中心に設定しましょう。Blenderなどからモデルをインポートしたとき、原点がズレていると回転がおかしなことになります。

実際に原点がズレているモデルの回転が変になるGifがこちら!
fish_rotate.gif

この魚のモデリングの原点は実は尻尾と胴体の付け根にあります。

このようにUnity上では一見、原点が中心にあるように思えても、違う場合がございますのでご注意ください!(特にモデリングツールからインポートするとき)

回転方法

回転させるプログラムはこちらになります!

LookRotate.cs
using UnityEngine;

public class LookRotate : MonoBehaviour
{

    [Range(-1.0f, 1.0f)]
    public float RotateLookX = 0f;

    [Range(-1.0f, 1.0f)]
    public float RotateLookY = 0f;

    [Range(-1.0f, 1.0f)]
    public float RotateLookZ = 0f;

    [Range(0, 5.0f)]
    public float RotateSpeed = 1f;

    void Update()
    {

        Vector3 forward = new Vector3(RotateLookX, RotateLookY, RotateLookZ);
        Quaternion rot = Quaternion.LookRotation(forward);

        rot = Quaternion.Slerp(this.transform.rotation, rot, Time.deltaTime * RotateSpeed);
        this.transform.rotation = rot;
    }
}

簡単に解説すると、インスペクターから進行方向(ベクトル)をイジると、その方向に向くプログラムになります。
Quaternion.LookRotationだけでも、向いている方向へ回転してくれるのですが、一気に回転します。

緩やかに回転させたいときは、Quaternion.Slerpを使えばOKです!

ここでRotateSpeedが大きくなればなるほど、回転速度が上がります。

fish_rotate3.gif

最後に

進行方向へ回転させるのを一からやると、手間がかかるのですが、標準関数でできるのは有り難いですね!

参考にして頂けると嬉しいです!

参考URL

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした