前提・実現したいこと
自身のゲームオブジェクトの正面方向(自身のゲームオブジェクトのZ軸方向)を、指定したベクトルの向きに設定したいのですが、
その方法は以下2つの方法になりますか?
以下2つのコードは同じ処理でしょうか?
ご教示お願い致します。
C#
1 Vector3 direction = target.transform.position - this.transform.position; 2 this.transform.forward = direction;
C#
1 Vector3 direction = target.transform.position - this.transform.position; 2 this.transform.localRotation = Quaternion.LookRotation(direction);
また、これら以外にも方法があればご教示お願いします。
試したこと
こちらのサイトとこちらのサイトを参考にしました。
実際に上記質問コードで、2つのオブジェクトを用意して試したところ、どちらも同じ方向を向いているように見えました。
また、それぞれで下記デバッグをとったところ、同じベクトルとなっていました。
C#
1Debug.Log(this.transform.forward);
しかし、LookRotationのリファレンスを見てみると、
C#
1public static Quaternion LookRotation (Vector3 forward, Vector3 upwards= Vector3.up);
と第2引数で、上方向を定義するベクトルが用意されていたので、
「this.transform.forward = direction;」で向かせる方法とは異なるのかなと思いました。
考えてみれば、自身のゲームオブジェクトのZ軸方向を、指定したベクトルと同じにすると言っても、
そのときの自身のゲームオブジェクトのY軸方向は何通りも考えられるので、
単純に自身のゲームオブジェクトの正面方向(Z軸方向)を指定したベクトルに設定するだけならば、何通りもあるということでしょうか?
そう考えると、普通は自身のゲームオブジェクトの上方向(Y軸方向)も考慮した上で、
自身のゲームオブジェクトの正面方向(Z軸方向)を指定したベクトルに設定したいことが多いと思うので、
C#
1 Vector3 direction = target.transform.position - this.transform.position; 2 this.transform.localRotation = Quaternion.LookRotation(direction);
の方法で、設定することが適切ということでしょうか?
C#
1 Vector3 direction = target.transform.position - this.transform.position; 2 this.transform.forward = direction;
の方法では上方向は考慮されていないですよね?(これに上方向を考慮する方法はありますか?)
なお、今回の質問では、やりたいこととして、与えられたベクトルと同じ向きにすることを考えているので、
与えられた地点に向かせること(LookAtメソッドを使うようなこと)は考えていません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/11 04:35
2020/10/11 06:27
退会済みユーザー
2020/10/11 06:40