表:
メソッド | 変換内容 | 用途例 |
---|---|---|
TransformDirection | 回転 | 法線の向きを回転させる、など |
TransformVector | 拡縮、回転 | ベクトルの変換(スケールも考慮) |
TransformPoint | 拡縮、回転、位置 | ローカル座標をグローバル座標系に変換 |
概要
Unityの Vector3
を Transform
で変換する場合に、使えるメソッドが3種類ある。
位置の変換は TransformPoint
でいいんだけど、向きの変換は TransformDirection
と TransformVector
の2つあるのはなにが違うんだっけ?とうろ覚えなので調べた。
違いは TransformDirection
が向きの変換でトランスフォームの回転のみが反映される。
なので元の Vector3
の長さは保たれる。
例えば法線ベクトルや方向ベクトルといった「向き」を表すベクトルをトランスフォームの姿勢に合わせたい場合に使える。
TransformVector
は回転に加えてスケールも反映される、ので長さも変化する可能性がある。
説明ページの日本語訳が中途半端だけど、英語をちゃんと読めば理解できたのだった…
TransformDirection
ローカル空間からワールド空間へ
direction
を変換します。
この操作はトランスフォームのスケールと位置に影響されません。 返されるベクトルはdirection
と同じ長さです。
TransformVector
ローカル空間からワールド空間へ
vector
を変換します。
この操作はトランスフォームの位置に影響されませんが、スケールには影響されます。 返されるベクトルはvector
と違う長さの可能性があります。