(2)-1 カメラの回転実験 Rotate+GetAxis


令和2年3月23日(月)です。transform.Rotate()をやってやりましょう

作戦?

 (1)現在の角度を取得
 (2)入力量により回転させる

(1)現在の角度を取得(確認)

インスペクターのオイラー角
X=0,Y=10,Z=0 に設定

①恐る恐る「Quaternion」で何が返ってくるのかを確認

    void Start()
    {
        Quaternion myQuaternion = this.transform.rotation;
        Debug.Log(myQuaternion);
    }

→Debug.Logで四元数が返って来たことを確認
(0.0, 0.1, 0.0, 1.0)

②QuaternionからEulerへ変換したらどうなるのかを確認

    void Start()
    {
        Quaternion myQuaternion = this.transform.rotation;
        Debug.Log(myQuaternion);
        float quat_x = myQuaternion.eulerAngles.x;
        float quat_y = myQuaternion.eulerAngles.y;
        float quat_z = myQuaternion.eulerAngles.z;
        Debug.Log("X="+quat_x);
        Debug.Log("Y=" + quat_y);
        Debug.Log("Z=" + quat_z);
    }

→Debug.Logで「X=0,Y=10,Z=0」が返ってきた素晴らしい!

(2)入力量により回転させる

        //もし、Horizontalがマイナスなら
        if Input.GetAxis("Horizontal")<0)
        {
        //そのまま入れる的な
            transform.Rotate(0, Input.GetAxis("Horizontal"), 0);
        }
        //もし、Horizontalがプラスなら
        if Input.GetAxis("Horizontal")>0)
        {
        //そのまま入れる的な
            transform.Rotate(0, Input.GetAxis("Horizontal"), 0);
        }

(問題)
通常Input.GetAxis("Horizontal");でやるみたいだけど←矢印を上下左右で
使用しているのでぐちゃぐちゃな結果になるので、これは使えないのと
+
(疑問)
釈然としないのは、<0 符号要らなくない?
別シーンで試してみたらエラーがでる。

(疑問)から解決
エラー内容が、条件部分がfloatをboolに変換出来ないとの事で、
条件は真偽なのにGetAxisは数値なので、判定のために無理やり条件式を作っている
条件式はboolにしなければいけないので無理やりでも作るというトリビア

(問題)の解決
Input.GetAxisでデフォルトの←矢印をAWSDに変更することが可能なら成り立つかも。。
Aボタン押した時だけ回転させる条件を追記すれば、、、

        if (Input.GetKey(KeyCode.A))
        {
            Input.GetAxis("Horizontal");
            transform.Rotate(0, Input.GetAxis("Horizontal"), 0);
        }

とりあえず、動く感じになりました。

参考サイト;Unity 回転周りについて