【Unity】ベクトルの変換メソッド3種類

2021-07-22

表:

メソッド 変換内容 用途例
TransformDirection 回転 法線の向きを回転させる、など
TransformVector 拡縮、回転 ベクトルの変換(スケールも考慮)
TransformPoint 拡縮、回転、位置 ローカル座標をグローバル座標系に変換

概要

Unityの Vector3Transform で変換する場合に、使えるメソッドが3種類ある。

位置の変換は TransformPoint でいいんだけど、向きの変換は TransformDirectionTransformVector の2つあるのはなにが違うんだっけ?とうろ覚えなので調べた。

違いは TransformDirection が向きの変換でトランスフォームの回転のみが反映される。 なので元の Vector3 の長さは保たれる。 例えば法線ベクトルや方向ベクトルといった「向き」を表すベクトルをトランスフォームの姿勢に合わせたい場合に使える。

TransformVector は回転に加えてスケールも反映される、ので長さも変化する可能性がある。

説明ページの日本語訳が中途半端だけど、英語をちゃんと読めば理解できたのだった…

TransformDirection

ローカル空間からワールド空間へ direction を変換します。
この操作はトランスフォームのスケールと位置に影響されません。 返されるベクトルはdirectionと同じ長さです。

TransformVector

ローカル空間からワールド空間へ vector を変換します。
この操作はトランスフォームの位置に影響されませんが、スケールには影響されます。 返されるベクトルはvectorと違う長さの可能性があります。