【Unity】Vector3.Lerp の日本語訳

この記事は Unity 公式スクリプトリファレンスの Vector3.Lerp を日本語に翻訳し、若干の補足を加えたものです。
翻訳元のページは以下となります。


何故か、Vector3.Lerp の日本語訳がないので、翻訳しました。
原文を直訳するだけでは分かりにくい文章になってしまうので、分かりやすくなるよう文章を変えたり、足したりしています。

Vector3.Lerp
補足
Lerp とは、線形補間の英語 Linear Interpolation(リニア・インターポレイション)を省略した略語です。
2つの点を直線で結ぶことを線形補間と言います。
メソッドの定義

public static Vector3 Lerp (Vector3 a, Vector3 b, float t);

概要

2点間を線形補間する。

説明

補間式 t を使って、点 a と b の間を補間します。
引数 t の値は 0~1 の範囲をとります。
このメソッドは、2つの終点の間を直線で進むときに、どれくらい進むか?を割合で指定し、その進めた位置(点)を求めるために使います。
例えば、なんらかのオブジェクトを2つの点の間で少しづつ移動させるような状況で使います。

メソッドは (b – a) * t と等しい値を返します。
t = 0 の場合は a を返します。
t = 1 の場合は b を返します。
t = 0.5 の場合は、a と b のちょうど中間の位置(点)を返します。

サンプルソースコード
using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    // 今回の旅の出発地点と終着地点のマーカーとして使うオブジェクトの transform
    public Transform startMarker;
    public Transform endMarker;

    // 1秒間で進む距離
    public float speed = 1.0F;

    // 出発時の時刻
    private float startTime;

    // 2つのマーカー間の直線距離
    private float journeyLength;

    void Start()
    {
        // 出発時の時刻を記録
        startTime = Time.time;

        // 今回の旅の直線距離(総距離)を計算
        journeyLength = Vector3.Distance(startMarker.position, endMarker.position);
    }

    // 終着地点に向かって進む
    void Update()
    {
        // 出発時の時刻から経過した時間を使って、進むべき距離を計算
        // 進むべき距離 = 経過時間 × 1秒間で進む距離
        float distCovered = (Time.time - startTime) * speed;

        // 進むべき距離の割合 = 進むべき距離 ÷ 総距離
        // ※ここで、進むべき距離は分かったが、実際にどこへ行けば良いのか?具体的な位置(点)はまだ分かっていない
        float fractionOfJourney = distCovered / journeyLength;

        // 進むべき距離の割合から Vector3.Lerp を使って具体的な位置(点)を求める
        // 進むべき位置(点)が分かったので、その位置に進む
        transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fractionOfJourney);
    }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です