Saat ini kerangka kerja AI saya yang sangat dasar memiliki agen yang bergerak di sepanjang jalur bergerigi yang terdiri dari serangkaian titik.
Mereka melakukan ini hanya dengan memindahkan posisi mereka dari satu titik ke titik berikutnya. Ketika mereka mencapai titik berikutnya mereka bergerak ke depan dan seterusnya. Bagaimana saya bisa mengubah ini sehingga mereka bergerak dengan lancar di sepanjang versi jalur yang melengkung, dan bagaimana cara menghasilkan kurva?
mathematics
algorithm
path-finding
SirYakalot
sumber
sumber
Jawaban:
Anda setelah beberapa jenis jalur smoothing. Tentu saja, seperti yang ditunjukkan bummzack, Anda juga ingin memastikan bahwa jalan apa pun yang Anda lakukan menghasilkan pergerakan hukum untuk agen Anda.
Artikel dari Gamasutra ini menjelaskan hampir semua yang perlu Anda ketahui, termasuk perataan jalur, pergantian legal dan algoritma perputaran yang realistis dan mulus.
Alternatif lain, yang sedikit lebih sederhana, adalah menggunakan perilaku Seek dengan lingkaran kecil / bola untuk memeriksa apakah agen berada di atau dekat dengan titik berikutnya di jalan.
sumber
Karena Anda sudah tahu titik kontrol Anda, Anda hanya perlu memperbarui kode interpolasi Anda untuk menggunakan algoritma untuk kelengkungan (Hermite atau Cosine, misalnya).
Situs-situs ini menawarkan penjelasan dan kode sampel yang bagus yang harus Anda mulai:
Metode Interpolasi Paul Bourke
Sol :: Tutorials - Trik Interpolasi
sumber
Saya akan menentang butir di sini dan menyarankan bahwa, alih-alih membuat kurva terlebih dahulu, hanya menanganinya secara frame-by-frame, menggunakan (misalnya) logika yang sama yang Anda gunakan untuk membuat homing -missile .
Ini akan jauh lebih mudah, dan mungkin lebih realistis karena Anda tidak memerlukan kasing khusus ketika ada dinding di antara dua titik - Anda hanya menangani deteksi tabrakan seperti biasa.
Kelemahannya adalah pergerakannya akan terlihat kurang optimal. Objek akan selalu mengambil jalur paling langsung dari satu titik arah ke titik berikutnya, yang berarti, tidak seperti dengan spline, ia tidak akan mulai berputar ke arah titik arah 3 sampai ia telah melewati titik arah 2. Tergantung pada situasi Anda, ini mungkin atau mungkin tidak diperbaiki dengan menyesuaikan titik arah Anda (jika itu bahkan masalah).
sumber
Pencari jalan harus memberi Anda jalan dan Anda tidak boleh mengubahnya. Saya percaya bahwa adalah mungkin untuk memodifikasi algoritma path finder Anda untuk mempertimbangkan bahwa path dengan belokan tajam adalah wrose daripada yang dengan kurva halus seperti yang sudah dilakukan dengan path panjang vs yang pendek.
Saya akan memposting di sini beberapa solusi jika saya dapat menemukan waktu untuk memikirkannya secara mendalam, tetapi saya pikir ini adalah cara untuk pergi.
sumber