C # / XNA kullanıyorum ve güncelleme kodunu draw koduyla karıştırmamaları konusunda epeyce söylendi - ve emin değilim! Fakat herhangi biri, lütfen “mantık kodunun” tam olarak ne olduğunu açıklayabilir mi?
Burada görüldüğü gibi: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] tüm oyun mantığınızı Güncelleme yöntemine (Draw'da değil) koyduğunuzdan emin olun ve her şey güzel bir sabit hızda çalışacaktır.
Bunu soruyorum çünkü oyunumun hızı FPS'ye göre dalgalanıyor. Yavaş FPS yavaş hareket eden nesnelere eşittir ve bunun tersi de geçerlidir. Ve evet, beklenen position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
kodu ekliyorum.
Bu muhtemelen büyük bir çaylak sorusu, ama ben sadece bunun tanımı konusunda net bir şekilde durmak istiyorum.
gt.ElapsedGameTime.TotalSeconds
Programın başlatılmasından geçen saniye sayısının (oyun) olduğunu sanıyordum . Hızınızı bununla çarpıyorsanız, 5 saniye çaldıktan sonra, hızınız 5 kat daha hızlı olacaktır (hızın 0 olarak ayarlandığı özel durum hariç). Başka ne sahip olabileceğinden emin değilim, bu yanlış olur, ama merak ediyorum.
iii
her güncellemeyi manuel olarak arttırdığım denilen değişkenimi kullanıyorum çünkü saniyeler içinde istemiyorum, adımlar veya çerçeveler istiyorum. Yolunuzun, yumuşak kodlama işlerinin geçerli bir yolu olduğunu görebiliyorum.
position = speed * ...TotalSeconds
. Dikkat et=
değil+=
. Öyle olsaydı+=
Yazdığınız olarak sadece, sonra pozisyon neredeyse anında ekranın dışına uçardı.