devi implementare un sistema per far si che la velocità del gioco sia indipendente dal numero di frame.
Mi spiego meglio:
se devo muovere un oggetto da A a B, se lo faccio spostare di 1 pixel ad ogni frame, avrò uno spostamento che "dipende" dalla velocità del computer. Se ad esempio il PC fa 50fps, si muoverà di 50 pixel al secondo. Se uso un computer molto più veloce, diciamo 300fps, avrò uno spostamento di 300 pixel in un solo secono, il che è inaccettabile.
Il metodo giusto consiste nel calcolare le animazioni usando come sistema di riferimento non i frames, ma il tempo reale (preso dal clock di sistema).
Quindi agisco così:
- calcolo quanto è durato il frame precedente usando un timer, diciamo che è durato dT secondi (potrebbe essere qualcosa come 0,1 secondi ad esempio)
- calcolo la quantità di spostamento da applicare all'oggetto scalando la sua velocità in questo modo: spostamento = velocità * dT. Così ottengo il numero di pixel (o altra unità di misura) da spostare nel singolo frame. Se voglio ad esempio spostarlo di 50 pixel al secondo, risulterà una cosa tipo: 50 px/s * 0,1s = 5 pixel. Se il computer è molto veloce avrò qualcosa come 50 px/s * 0,05 s (suppongo un computer il doppio più veloce di prima) = 2,5 pixel (ottengo uno spostamento dimezzato, che quindi compensa la velocità del computer).
- Applico lo spostamento calcolato
Su google troverai tonnellate di materiale, ma almeno adesso sai qual è la tecnica base :-)
|