「オブジェクトを動かしたい」と思って transform.position = targetPosition; と書いたら、一瞬で目的地にワープしてしまった——Unity初心者なら誰もが通る道です。移動も回転も、直接代入では「カクッ」と切り替わるだけで、プロのゲームのような滑らかさは出せません。
その滑らかさを作るのが、補間関数の Lerp(ラープ)と Slerp(スラープ)です。この記事では2つの関数の仕組みと使い分け、そして「なぜか目標に近づくと遅くなる」現象の正体、等速で動かしたいときの正解(MoveTowards / RotateTowards)までを解説します。
この記事でわかること
Lerp(A, B, t)の仕組みと補間係数tの意味- 回転にはLerpではなく
Slerpを使う理由- 目標に近づくほど減速する「イージングアウト」が起きる仕組み
- 等速で動かしたいときの
MoveTowards/RotateTowards
Sponsored
Lerp(線形補間)とは?
Lerpは「Linear Interpolation(線形補間)」の略です。二つの値(AとB)の間を、指定した割合(t)で直線的に補間する(埋める)計算手法です。
Unityでは、Vector3.Lerp、Color.Lerp、Mathf.Lerpなど、様々な型に対してこの関数が用意されています。
関数の基本形:
// A: 開始値, B: 終了値, t: 補間係数 (0.0fから1.0f)
結果 = Lerp(A, B, t);
t = 0.0fのとき、結果はAになります。t = 1.0fのとき、結果はBになります。t = 0.5fのとき、結果はAとBのちょうど中間になります。
