[UNITY]タップした方向に物体を回転させる

久しぶりです。えんちゃです。
アプリ作成がラストスパートです。
ゲーム時代はできているんですけど、広告がもう少しです。もうすこーしお待ちください。

これからしばらくは、作成したアプリを見直しながら、難しかったところ、学んだところ、大事だと思った箇所を備忘録として書いていきます。

さて今回、オブジェクトをタップした方向に向ける方法を書いていきます。

結論として、
一つはガチ数学を駆使する方法
もう一つは関数LookAtを利用する方法です。

その時のツイート

さて気を取り直して書いていきましょう

数学を駆使して回転させる

タップした方向の角度を数式でゴリゴリ求めます。

計算で使う数式を呼び出す

Mathf.関数(数式)

オブジェクトを指定した角度方向に回転させる。

 transform.rotation = Quaternion.Euler( [(角度)Vector3]);

これらをつかっていきます。

オブジェクトの座標 - タップした座標を (X,Y,Z)とします。

        int rotateVec;
        rotateVec = (int)(Mathf.Atan( [X] / [Y]) * 180.0 / 3.1415);
        if ([Y] < 0)
        {
            rotateVec = rotateVec + 180;
        }
        transform.rotation = Quaternion.Euler(new Vector3(0, 0, 180 - rotateVec));

アークタンジェントで回転角を計算していきます。
アークタンジェントではYが0以上0以下の時をIF文で分けていきます。

うーんめんどくさい。
そんな時、調べてたら見つけてしまった

LookAt関数を使う

なんとこれ、向いてほしい方向のベクトルを書くだけでそっちの方向を向いてくれるという素晴らしい関数です。

transform.LookAt([(タップした座標)Vector3], Vector3.up);

以上です。(^^;;;)
いやー知っているか知らないかって大事ですね。

コメント

タイトルとURLをコピーしました