DÜZENLE:
Lütfen @ Bluescrn'in bu soruya verdiği cevaba bakınız; hareket vektörleri veya konumlarından ziyade kontrolleri tekrar oynatmadaki zayıflıkları inceler.
-
Doğru yoldasın. İşte kullanacağım yaklaşım:
Kontrolörler
Klavye girdisini alan ve karakterinize aktaran bir Controller sınıfı oluşturun. Bununla birlikte, önemli tuşlara (örn. Oklar, atlama, vb.) Tam olarak basıldığında ve bırakıldığında da bir Kontrolör kaydına sahip olun. Bu tür bilgileri depolar:
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
Bir Denetleyicinin iki modu vardır:
- Kayıt: Klavye girişini alır. Listeye girişi kaydeder. Karakter girişini klavye durumuna göre verir.
- Tekrarla: Klavye girişini yok sayar. Seviye başladığından bu yana geçen milisaniyeye göre listede ilerler. Geçerli anda kaydedilmiş klavye durumuna göre karakter girişini verir.
Karakterler
Character nesneniz oluşturulduğunda, kendisi için yeni bir Denetleyici oluşturur. Karakter her zaman iki moddan birinde olabilir:
- Aktif: Sadece bir tane aktif Karakter vardır ve o sizin kontrol ettiğiniz karakterdir. Karakter Aktif moddayken, Kontrolörü Kayıt modundadır. Bir Karakter oluşturulduğunda varsayılan olarak Aktif moddadır.
- Hayalet: Bu, geçmiş eylemlerinizi tekrarlayan kişidir. Bir Karakter Hayalet moduna girdiğinde, görünümünü değiştirir ve Denetleyicisini Tekrar moduna geçirir.
Seviyeleri
Yeni başlayan bir seviye
Seviyeye başladığınızda, tek bir Karakter oluşturun. Şimdi seviye başlar ve oyuncu işini yapar.
Zaman sıfırlandığında
Seviye sıfırlandığında, üç şey yapın:
- Mevcut Aktif Karaktere Hayalet moduna girmesini söyleyin.
- Yeni bir Karakter oluşturun.
- Kendilerini sıfırlamak için tüm Karakterleri arayın. Böylece hareket, vb. Olmadan başlangıç pozisyonuna geri getirilirler. Kontrolörlerine hiçbir tuşa basılmadan milisaniye 0'a sıfırlamalarını söylerler.
Sonra seviye başlar ve oyuncu işini yapar.