Jadi saya telah menemukan masalah dalam permainan yang sedang saya kerjakan, tetapi tampaknya hal yang cukup mendasar yang mungkin muncul dalam banyak permainan.
Gim saya mengharuskan beberapa fungsi permainan terjadi pada titik waktu yang sangat spesifik selama animasi karakter. Jadi, seperti judulnya, saya bertanya-tanya apa saja teknik dan strategi fundamental yang baik untuk menyinkronkan peristiwa / fungsi / aksi yang terkait dengan gameplay ke titik-titik tertentu dalam animasi karakter.
Berikut adalah beberapa contoh sederhana dari apa yang saya bicarakan di berbagai jenis permainan:
Karakter Anda mengisi ulang senjata mereka dalam penembak . Karakter Anda memainkan animasi 'reload' nya, tetapi penting bahwa fungsi yang mengatur variabel currentAmmo hanya dipanggil pada saat yang tepat setelah majalah ditukar dan pistol dimiringkan. Ini mungkin beberapa titik di tengah animasi ulang.
Dalam RPG berbasis giliran karakter Anda berdiri dalam garis menghadap garis musuh. Ketika diperintahkan untuk menyerang, salah satu karakter Anda berlari / melompat ke salah satu musuh dan menebas pedang raksasa mereka sebelum berlari / melompat kembali ke tempat mereka berdiri. Anda ingin memastikan bahwa musuh rusak pada saat yang tepat ketika animasi pemotongan dimainkan - beberapa titik antara berlari dan berlari kembali.
Dalam permainan sembunyi - sembunyi , karakter Anda dapat menyelinap dan berinteraksi dengan komputer dan tombol di dunia. Mungkin ada tombol yang mematikan catu daya ke lampu pos yang Anda infiltrasi. Saat tombol aksi ditekan, karakter Anda menjangkau dan menekan tombol lalu kembali ke posisi diam. Anda ingin lampu dimatikan pada titik yang tepat dalam animasi 'push_button' ketika tombol ditekan.
Diakui, kasus khusus saya paling seperti contoh kedua , di mana saya telah membuat animasi di mana karakter berbasis giliran saya menerjang maju selama serangan dan saya ingin kerusakan diterapkan pada saat yang tepat bahwa animasi tampaknya membuat kontak . Karena permainan saya menggunakan sistem berbasis giliran (bayangkan sesuatu seperti Final Fantasy atau Fire Emblem) saya ingin kerusakan / penyembuhan / sihir / dll. untuk diterapkan pada waktu yang tepat selama setiap animasi karakter walaupun saya sebenarnya tidak menggunakan tabrakan / hitbox.
Saya harus menyebutkan bahwa saya membuat game saya di mesin permainan yang populer, dan bahwa saat ini saya sedang menangani ini dengan menggunakan acara animasi mereka atau memberitahukan untuk mencapai sesuatu yang mendekati hasil yang diinginkan - karakter saya melakukan perintah tertentu dan memicu sebuah animasi khusus-perintah (yaitu: 'attack_command') dan aset animasi untuk masing-masing perintah saya harus menyertakan acara animasi / beri tahu 'panggilan balik' ke dalam karakter saya, fungsi ExecuteCommand. Dengan kata lain - karakter memberitahu animasi serangan untuk dimainkan, dan kemudian animasi serangan memancarkan suatu peristiwa / memberitahukan callback ke dalam karakter pada saat yang tepat selama animasi ketika kerusakan harus ditangani.
Jujur, ini bekerja untuk saat ini, tetapi rasanya salah - seperti saya kehilangan beberapa bagian dari gambar yang lebih besar di sini! Sebagian alasan mengapa metode ini terasa salah adalah karena memasangkan logika permainan dengan aset animasi; jika aset animasi saya lupa untuk menyertakan event / panggilan balik ExecuteCommand (), perintah tidak akan dijalankan dengan benar dan kode tambahan diperlukan untuk memeriksa apakah animasi perintah selesai tanpa menjalankan perintah. Ini berantakan dan itu berarti bahwa permainan saya memiliki ketergantungan aneh pada asetnya. Tentu saja saya ingin kerusakan terjadi pada titik tertentu selama animasi serangan saya, tetapi saya merasa sangat aneh memanggil kode gameplay di dalam aset animasi ..
Jadi apa yang saya abaikan di sini? Apa beberapa teknik umum yang baik untuk menangani jenis situasi ini di mana Anda ingin aksi gameplay penting tertentu terjadi pada waktu tertentu selama animasi?
Sunting: Untuk memperjelas, ini bukan pertanyaan khusus mesin atau saya juga mencari desain / teknik khusus mesin. Saya tertarik dengan teknik sinkronisasi animasi / gameplay umum yang mungkin digunakan dalam proyek game Anda terlepas dari teknologi yang digunakan.