Oppure

Loading
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.

A cura di: Oligoatria