実現したいこと
下記のコードについて、
C#
1Vector3 targetDir = Vector3.ProjectOnPlane(target.position - trf.position, Vector3.up).normalized;
targetDir.yが、「ワールド空間を基準としたtargetDirベクトルのy軸周りの角度」のような変な勘違いをしていたことがあり、
ベクトルについてよく考えてみたら、混乱してしまったので、質問させていただけたらと思います。
前提条件
以下は理解しています。
任意のベクトルにおいて、そのベクトルがワールド空間を基準にしたものなのかローカル空間を基準にしたものなのかは、 コンピュータ側では定まっていない。開発者側が意識すること。
試したこと
前提条件を基に、以下のような考えに至りました。
Vector3のベクトルというものはコンピュータ側からすれば、ただの3つの変数(x,y,z)から構成される構造体であって、 (正確には、構造体には他にもmagnitudeやnormalized等の変数も用意されている)、 それを幾何ベクトルとして扱うか、ただの3つの変数を持った構造体として扱うかは、コードを組む開発者次第。 幾何ベクトルとして扱った場合でも、ワールド空間を基準にしたものなのかローカル空間を基準にしたものなのかは、 コンピュータ側では定まっていなく、それも開発者側が意識して扱わなければならない。
...と思ったのですが、下記コードについて考えると、上記認識に当てはめたら、
右辺のベクトルは、幾何ベクトルではなく、ただの3つの変数を持った構造体として扱っているから、
このようなコードとして成り立つ、とも思えるのですが
(ちなみに、この場合の右辺のベクトルは、それぞれの成分が、ワールド空間を基準にした
XYZ軸周りの角度として機能していると思っています。間違っていたらご指摘お願いします)、
C#
1this.transform.localEulerAngles = new Vector3 (0, 30, 0);
変に深く考えすぎかもしれませんが、考え方によっては、
右辺のベクトルは、Unity側でも幾何ベクトルとして認識されているけど、
localEulerAnglesに代入することにより、何か変換がかかって、各成分が軸周りの角度として機能している、
みたいなことになっていたりするのかなとも思い、混乱してしまいました。
そもそも前提条件以降に至った考えも、本当に合っているか自信がなくなってしまったため、
ご教示お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/26 00:02
退会済みユーザー
2021/02/26 07:09