03-04-2011, 10:26 AM
(Questo messaggio è stato modificato l'ultima volta il: 03-04-2011, 10:29 AM da Jonathan Archer.)
(25-03-2011, 09:26 AM)TheFedex87 Ha scritto: E rieccomi qua!!!!!! Stavolta vi chiedo un consiglio su come effettuare lo scrolling video...Io l'unico modo che ho pensato (e forse l'unico possibile...boh) è di muovere ogni singola sprite dello schermo inbase alla direzione di movimento...Cioè se ora quando premo tasto destro o sinistro passo il comando di movimento omino:
dbSpriteMove(idHeroSprite, vel),
per lo scrolling farei una cosa di questo tipo:
Premetto che io uso DBPro e non GDR tuttavia i concetti son quelli. Io penso che caricare il gioco con 5000 sprite (un livello piuttosto corto direi) bisognerebbe automatizzare meglio il codice. Mi spiego meglio:
Se non ricordo male nelle prime versioni di Mario lui si muoveva soltanto verso destra e non verso sinistra impossibilitandoti a tornare indietro. La proposta é questa:
Ammettiamo di riservare degli ID ai singoli personaggi/oggetti:
Sprite di Mario: 1-100
Sprite dei nemici: 101-200
Sprite terreno: 201-1000
Sprite zone sospese: 1000-2000
La cosa più ovvia che abbiamo esposto per muovere la scena é lasciar fermo il personaggio (come nel vecchio gioco). Lo sprite di Mario si aggiorna, nel senso che da la sensazione della corsa, in realtà é la mappa che si muove.
Tramite FOR e NEXT puoi far in modo di processare (spostare verso sinistra di 1) tutti gli ID del terreno e delle zone sospese in pochissime righe di codice, tenendo ovviamente in considerazione quando Mario si muove o meno.
Tutti gli sprite (indistintamente) che escono dalla scena (sulla sinistra) ovvero che hanno una posizione 0 sottratta quella della propria larghezza vengono cancellati per alleggerire il gioco (sempre usando FOR e NEXT) dato che il personaggio non torna indietro.
Se poi vuoi ulteriormente alleggerire il carico anche della VGA puoi optare per gli sprite compressi (richiedono una scheda video compatibile)