Guida SDL - Una prima implementazione di motore fisico
Cerca
 











Guida SDL

Capitolo 12° - Una prima implementazione di motore fisico

A cura di: Oligoatria

<< Precedente Prossimo >>
Una prima implementazione di motore fisico



Ho pensato di includere in questa guida anche un piccolo esempio che possa far capire cosa si può sviluppare utilizzando questa libreria.

Ora che abbiamo la padronanza della tecnica degli sprite è necessario almeno dare un'occhiata al movimento, comandato dall'utente tramite tastiera, sullo stile platform; quindi il classico omino che subisce la forza di gravità.



Prima di tutto dobbiamo dichiarare due nuove variabili:



/* Gravità */

        int gravita=0;



    /* Direzione */

        bool sinistra=false;



Poi, nel ciclo di loop togliamo l'effetto in seguito alla pressione della freccia verso il basso, e sostituiamo a quella verso l'alto:



if ( (keys[SDLK_UP] == SDL_PRESSED) && ((dst.y+ALTEZZA_IMMAGINE)>=y) )

{

    gravita=-20;

}



L'intento è di far saltare il personaggio, ora vedremo cosa abbiamo sostanzialmente fatto con questi comandi.



Prima di disegnare, aggiungiamo il codice seguente:



/* Gravità */

    dst.y+=gravita++;

    if ((dst.y+ALTEZZA_IMMAGINE)>=y)

    {

        gravita=0;

        dst.y=y-ALTEZZA_IMMAGINE;

    }



In questo modo la posizione dell'immagine si sposterà verso il basso di un valore crescente.. nel mondo reale la crescita è esponenziale, nei platform questa non sempre lo è; la tipologia di gioco influenza la forza della gravità.

Come soglia di collisione prendiamo i piedi del personaggio, quindi, essendo che le coordinate partono dall'angolo in alto a sinistra dello schermo (0, 0), posizione y attuale + altezza immagine.

A questo punto si può capire che per avere un salto è sufficiente, alla pressione del tasto interessato, assegnare alla gravità un valore negativo; è chiaro che tanto più grande sarà questo numero (in valore assoluto), tanto maggiore sarà la forza del salto.

<< Precedente Prossimo >>
 

Creative Commons License
Il layout di questo sito è concesso sotto licenza Creative Commons.
Per maggiori informazioni sulle licenze dei contenuti del sito, clicca.