Saya membuat platformer 2d di mana pemain dapat menekan tombol, dan me-restart level, hanya karakter mereka sebelumnya juga akan menjalankan level pada saat yang sama, seperti mereka melakukan perjalanan kembali dalam waktu.
Saya tahu permainan lain telah melakukan ini sebelumnya, dan cara saya berpikir untuk melakukannya adalah membuat karakter permainan memiliki serangkaian tindakan (Idle, Jumping, Walking Left dll.) Dan kemudian mendeteksi perubahan dalam tindakan tersebut dan mencatatnya. daftar bersama dengan waktu permainan. Jadi ketika saya membutuhkan karakter untuk menjalankan level lagi dengan sendirinya, saya bisa langsung saja mengubah daftar tindakannya pada waktu yang tepat.
Apakah ini cara terbaik untuk melakukannya? Adakah yang punya pengalaman dalam hal ini?
Terima kasih.
sumber
Jawaban:
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:
Pengendali memiliki dua mode:
Karakter
Ketika objek karakter Anda dibangun, itu menciptakan Controller baru untuk dirinya sendiri. Karakter dapat dalam satu dari dua mode kapan saja:
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:
Kemudian level dimulai dan pemain melakukan tugasnya.
sumber
Jika Anda memutar ulang input yang direkam, pertimbangkan implikasi objek bergerak / yang dapat dirusak / interaktif di dunia, yang mungkin telah memindahkan atau mengubah status ketika tindakan tersebut diputar ulang.
Selain itu, memutar ulang input tidak akan berfungsi dengan tepat jika game Anda menggunakan stempel waktu variabel. Anda mungkin ingin mempertimbangkan pembaruan game timestep tetap (dengan interpolasi untuk rendering framerate variabel)?
sumber
Ada banyak topik yang mencakup rekaman game / sistem replay / dll yang mungkin harus menjadi batu kunci dari runthroughs masa lalu Anda.
Ini satu: Cara merancang sistem replay
sumber
Merekam input keyboard mungkin tidak berguna dalam kasus Anda. Namun Anda dapat menghasilkan spline dengan garis waktu. Anda bahkan dapat memundurkan waktu jika Anda kesulitan dengan kekuatan yang perlu Anda terapkan
sumber