Tips

【Unity】Vectorで現在地点から目標地点へ移動する

Vector3Dには、ある地点からある地点へ移動する関数がいくつかあるため、比較しました。

Vector3DのAPIから、Lerp、Slerp、Smooth Damp、MoveTowardsを 以下のスクリプト で比較してみます。

Lerpは線形補完なので真っすぐに、Slerpは球面線形補完のため円を描くように開始と終了の2地点が補完がされます。

SmoothDampは、最初と最後の速度がゆっくりになります。TPSのカメラの追従とかで使われます。第2引数は、現在の速度を表し、関数内部で更新されます。第3引数の値は、目標地点へ到達するおおよその時間を表します。

Lerp、Slerpの第一引数は開始地点であり、変化はしません。一方で、SmoothDamp、MoveTowardsの第一引数は、移動するオブジェクトの現在地を取ります。

LerpとMoveTowardsは、表示上の結果は同じですが、意味合いが異なります。Lerpは2地点間の距離に対して、第3引数で渡した割合に位置する座標を返します。 MoveTowards は、現在地点から目標地点へのベクトルに対して、第3引数で渡した値だけ移動した座標を返します。

Pocket