私はこれについて典型的な物理方程式を試しましたが、方程式は一定の加速度を扱い、正しく機能するように変更する必要があるため、実際には機能しません。基本的に、私は広範囲の速度で走行できる車を持っており、その進路の終わりに達すると、一定の距離と時間で減速して停止する必要があります。
つまり、次のようになります。
V0
、または現在の速度
Vf
、または到達したい速度(通常は0)
t
、またはパスの終わりに到達するのにかかる時間
d
、または変更時に移動したい距離V0からVfへ
a
、またはV0からVfに移動するために必要な加速度 を計算したい
これがプログラミング固有の質問になる理由はa
、車が停止し続けるため、タイムステップごとに再計算する必要があるためです。したがって、V0
常にV0
最後のタイムステップから、最後のタイムステップで計算されplus
たものに変更されます。a
つまり、基本的にはゆっくりと停止し始め、最終的には実際の車のように突然停止します。
編集:
大丈夫、素晴らしい反応をありがとう。私が必要としていたことの多くは、これについて考える手助けをすることでした。皆さんからさらにいくつかのアイデアが得られたので、具体的に説明します。
目的地からの車を持っているc
ので。で運転しています。移動するまでの速度に達する加速度を見つけたいと思います。64 pixels
d=64
2 pixels per timestep
timestep is 1/60 of a second
a
0.2 pixels per timestep
d
d = 64 //distance
V0 = 2 //initial velocity (in ppt)
Vf = 0.2 //final velocity (in ppt)
また、これはゲームループで発生するため、変数delta
は各アクションに渡されます。これはmultiple of 1/60s that the last timestep took
です。つまり、1/60delta
秒かかった場合は1.0、1/30秒かかった場合delta
は0.5になります。加速が実際に適用される前に、このデルタ値が乗算されます。同様に、車が再び移動する前に、その速度にデルタ値が掛けられます。これはかなり標準的なものですが、私の計算で問題を引き起こしている可能性があります。