LERP - Interpolasi Linier
Saya memberikan jawaban ini untuk masalah yang sama beberapa hari yang lalu, tetapi di sini kita mulai:
Interpolasi Linear adalah fungsi yang memberi Anda angka di antara dua angka, berdasarkan progresnya. Anda sebenarnya bisa, mendapatkan poin antara dua poin.
The Great Formula - Cara menghitungnya
Formula LERP umum diberikan oleh pu = p0 + (p1 - p0) * u
. Dimana:
- pu: Jumlah hasilnya
- p0: Angka awal
- p1: Angka terakhir
- u: Kemajuan. Itu diberikan dalam persentase, antara 0 dan 1.
Cara mendapatkan persentase
Anda mungkin bertanya-tanya, "Bagaimana saya bisa mendapatkan persentase ini !?" Jangan khawatir. Seperti ini: Berapa banyak waktu yang dibutuhkan untuk melakukan perjalanan untuk memulai vektor untuk menyelesaikan? Oke, bagi dengan waktu yang sudah berlalu. Ini akan memberi Anda persentase.
Lihat, seperti ini: percentage = currentTime / finalTime;
Menghitung Vektor
Untuk mendapatkan vektor yang dihasilkan, yang perlu Anda lakukan adalah menerapkan rumus dua kali, satu untuk komponen X dan satu untuk komponen Y. Sesuatu seperti ini:
point.x = start.x + (final.x - start.x) * progress;
point.y = start.y + (final.y - start.y) * progress;
Menghitung waktu variasi
Anda mungkin ingin memiliki poin Anda untuk bepergian dengan kecepatan 0,5 poin, ya? Jadi katakanlah, jarak yang lebih jauh akan ditempuh dalam waktu yang lebih lama.
Anda dapat melakukannya sebagai berikut:
Dapatkan jarak panjang Untuk itu, Anda akan membutuhkan dua hal. Dapatkan vektor jarak, lalu ubah dalam nilai panjang.
distancevec = final - start;
distance = distancevec.length();
Saya harap Anda tahu vektor matematika. Jika tidak, Anda dapat menghitung panjang vektor dengan rumus ini d = sqrt(pow(v.x, 2) + pow(v.y, 2));
.
Dapatkan waktu yang dibutuhkan dan perbarui waktu akhir. Yang ini mudah. Karena Anda ingin setiap kutu Anda mendapatkan panjang 0,5, kita hanya perlu membagi dan mendapatkan berapa banyak kutu yang kita dapatkan.
finalTime = distance / 0.5f;
Selesai
PEMBERITAHUAN: Mungkin, ini mungkin bukan kecepatan yang dimaksudkan untuk Anda, tetapi ini adalah haknya. sehingga Anda memiliki gerakan linier, bahkan pada gerakan diagonal. Jika Anda ingin melakukan x + = 0,5f, y + = 0,5f, maka baca buku matematika vektor dan periksa kembali rencana Anda.
goal_dist
di Andaif
kondisi?