LERP-線形補間
私は数日前に同様の問題に対してこの答えを出しましたが、ここに行きます:
線形補間は、進行状況に基づいて、2つの数値の間の数値を提供する関数です。実際には、2つのポイントの間にポイントを取得できます。
グレートフォーミュラ-計算方法
一般的なLERP式はで与えられpu = p0 + (p1 - p0) * u
ます。どこ:
- pu:結果番号
- p0:初期番号
- p1:最終番号
- u:進捗状況。パーセンテージで、0と1の間で指定されます。
パーセンテージを取得する方法
「このパーセンテージを取得するにはどうすればよいですか?」心配しないで。それはこのようなものです:開始ベクトルが終了するまでにポイントが移動するのに何時間かかりますか?了解しました。すでに経過した時間で割ります。これでパーセンテージがわかります。
見て、次のようなもの: percentage = currentTime / finalTime;
ベクトルの計算
結果のベクトルを取得するために必要なことは、式を2回適用することです。1つはXコンポーネント用、もう1つはYコンポーネント用です。このようなもの:
point.x = start.x + (final.x - start.x) * progress;
point.y = start.y + (final.y - start.y) * progress;
変量時間の計算
ポイントが0.5ポイントの速度で移動するようにしたい場合があります。つまり、より長い距離がより長い時間で移動するとします。
あなたは次のようにそれを行うことができます:
私はあなたがベクトル数学を知っていることを望みます。そうでない場合は、この式で長さを計算できますd = sqrt(pow(v.x, 2) + pow(v.y, 2));
。
できました。
注意:たぶん、これはあなたにとって意図された速度ではないかもしれませんが、これは正しいです。したがって、斜めの動きでも直線的な動きになります。x + = 0.5f、y + = 0.5fを実行したい場合は、ベクトル数学の本を読んで、計画を再確認してください。
goal_dist
はあなたのif
状態を意味しますか?