Saya menggunakan C # / XNA dan telah diberitahu beberapa kali untuk tidak mencampur kode pembaruan dengan kode draw - dan saya yakin saya tidak! Tetapi bisakah orang menjelaskan apa sebenarnya 'kode logika' itu?
Seperti yang terlihat di sini: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] pastikan Anda memasukkan semua logika game Anda ke dalam metode Pembaruan (bukan dalam Draw!) dan semuanya akan berjalan dengan kecepatan konstan yang bagus.
Saya menanyakan hal ini karena kecepatan permainan saya berfluktuasi relatif terhadap FPS. FPS yang lambat sama dengan benda yang bergerak lambat dan sebaliknya. Dan ya, saya termasuk position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
kode yang diharapkan .
Ini mungkin pertanyaan pemula yang besar, tapi saya hanya ingin benar-benar jelas tentang definisi ini.
gt.ElapsedGameTime.TotalSeconds
jumlah detik berlalu dari memulai program (permainan). Jika Anda mengalikan kecepatan Anda dengan itu, maka setelah 5 detik bermain, kecepatan Anda akan 5 kali lebih cepat (kecuali kasus khusus di mana kecepatan diatur ke 0). Tidak yakin apa lagi yang bisa Anda miliki yang membuat itu tidak benar, tapi saya tertarik.
iii
bahwa saya secara manual menambah setiap pembaruan, karena saya tidak menginginkannya dalam hitungan detik, saya ingin langkah atau bingkai. Saya dapat melihat bahwa cara Anda adalah cara yang valid untuk soft-coding.
position = speed * ...TotalSeconds
. Perhatikan itu=
bukan+=
. Jika+=
seperti saat Anda mengetik, maka posisi Anda akan terbang dari layar hampir seketika.