Sto usando C # / XNA e mi è stato detto molte volte di non mescolare il codice di aggiornamento con il codice di disegno - e sono certo che non lo sono! Ma qualcuno potrebbe descrivere cos'è esattamente il "codice logico"?
Come visto qui: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] assicurati di inserire tutta la tua logica di gioco all'interno del metodo Update (non in Draw!) e tutto funzionerà a una buona velocità costante.
Lo sto chiedendo poiché la velocità del mio gioco è variabile rispetto all'FPS. FPS lento equivale a oggetti a movimento lento e viceversa. E sì, sto includendo il position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
codice previsto .
Questa è probabilmente una grande domanda da principiante, ma voglio solo essere assolutamente chiaro sulla definizione di questo.
gt.ElapsedGameTime.TotalSeconds
il numero di secondi trascorsi dall'avvio del programma (gioco). Se stai moltiplicando la tua velocità per quella, quindi dopo 5 secondi di gioco, la tua velocità sarà 5 volte più veloce (tranne il caso speciale in cui la velocità è impostata su 0). Non sono sicuro di cos'altro potresti rendere ciò non vero, ma sono incuriosito.
iii
che incremento manualmente ogni aggiornamento, perché non la voglio in pochi secondi, voglio passaggi o frame. Vedo che la tua strada è comunque un modo valido per codificare le cose.
position = speed * ...TotalSeconds
. Si noti che=
non lo è+=
. Se fosse+=
esattamente come hai digitato, la tua posizione volerebbe fuori dallo schermo quasi istantaneamente.