EDIT:
Silakan lihat jawaban @ Bluescrn untuk pertanyaan ini; ia menguraikan kelemahan dalam memutar ulang kontrol daripada vektor gerakan atau posisi.
-
Anda berada di jalur yang benar. Inilah pendekatan yang saya gunakan:
Pengontrol
Buat kelas Controller yang menerima input keyboard dan meneruskannya ke karakter Anda. Namun, juga memiliki catatan Pengontrol tepat ketika tombol signifikan (misalnya panah, melompat, dll) ditekan dan ketika mereka dilepaskan. Itu akan menyimpan informasi semacam ini:
actions[0].milliseconds = 400 actions[0].action = right pressed
actions[1].milliseconds = 1000 actions[1].action = jump pressed
actions[2].milliseconds = 1300 actions[2].action = jump released
actions[3].milliseconds = 2500 actions[3].action = jump pressed
actions[4].milliseconds = 3000 actions[4].action = jump released
actions[5].milliseconds = 5330 actions[5].action = right released
Pengendali memiliki dua mode:
- Rekam: Menerima input keyboard. Merekam input dalam daftar. Masukkan input karakter berdasarkan kondisi keyboard.
- Putar ulang: Mengabaikan input keyboard. Kemajuan melalui daftar menurut milidetik berlalu sejak tingkat dimulai. Masukkan input karakter berdasarkan status keyboard yang direkam pada saat ini.
Karakter
Ketika objek karakter Anda dibangun, itu menciptakan Controller baru untuk dirinya sendiri. Karakter dapat dalam satu dari dua mode kapan saja:
- Aktif: Hanya ada satu Karakter aktif dan karakter yang Anda kendalikan. Saat Karakter dalam mode Aktif, Pengontrolnya dalam mode Rekam.Secara default ketika Karakter dibangun itu dalam mode aktif.
- Hantu: Ini adalah yang mengulangi tindakan masa lalu Anda. Ketika Karakter memasuki mode Hantu, ia mengubah penampilannya dan mengatur Pengontrolnya ke mode Putar Ulang.
Tingkat
Level yang baru dimulai
Ketika Anda memulai level, buat satu karakter. Sekarang level dimulai dan pemain melakukan tugasnya.
Kapan waktu diatur ulang
Ketika level direset, lakukan tiga hal:
- Beri tahu Karakter Aktif saat ini untuk masuk ke mode Hantu.
- Buat Karakter baru.
- Panggil semua Karakter untuk Mengatur Ulang sendiri. Ini akan menempatkan mereka kembali pada posisi awal tanpa gerakan, dll. Mereka pada gilirannya akan memberitahu Pengontrol mereka untuk mengatur ulang ke milidetik 0 tanpa tombol ditekan.
Kemudian level dimulai dan pemain melakukan tugasnya.