23-03-2011, 10:02 PM
Mi sembra di aver capito che la funzione dbSpriteCollision funzioni così:
bool dbSpriteCollision(int sprite1, int sprite2)
{
// se collide: return 1;
// se non collide: return 0;
}
Correggimi se sbaglio, non ho trovato la reference su internet (tu da dove la prendi?). Se è vero quello che ho scritto sopra, dovrebbe andar bene un codice simile (ti ricordo che sto perlopiù tirando a indovinare):
Il codice probabilmente è sbagliato, però la logica credo che si capisca.
bool dbSpriteCollision(int sprite1, int sprite2)
{
// se collide: return 1;
// se non collide: return 0;
}
Correggimi se sbaglio, non ho trovato la reference su internet (tu da dove la prendi?). Se è vero quello che ho scritto sopra, dovrebbe andar bene un codice simile (ti ricordo che sto perlopiù tirando a indovinare):
Codice PHP:
// omino/mario da muovere
dbLoadSprite "Image/ciccio.png",100
dbSprite(100, posX, posY, 100);
// carico e posiziono i primi 5 cubetti
int x; // numro del cubetto
for(x=0; x<5; x++)
{
dbLoadSprite "Image/mattone.png", x;
dbSprite(x, x*dbSpriteWidth(x), altezza_terreno, x);
}
// carico il sesto cubetto, lo posiziono dove l'hai messo tu
x++
dbLoadSprite "Image/mattone.png", x;
dbSprite(x, x*dbSpriteWidth(x), altezza_terreno+dbSpriteHeight(x), x);
// verifico se collide con il terreno (collisione orizzontale) // sarebbe più opportuno dividere collisioni nord sud est ovest, ma semplifico
int collisione_terreno=false;
for(int y=0; y<5; y++) if(dbSpriteCollision(100, y)) collisione_terreno=true;
// verifico se collide con le pareti (collisione verticale)
int collisione_parete=false;
if(dbSpriteCollision(100, 5) collisione_parete=true;
// movimenti
if(!collisione_terreno) dbMoveSprite(100,5); // se non collide con il terreno: precipita
if(dbRightKey() && !collisione_parete) dbSprite(100, dbSpritepositionX(100) + 5, dbSpritepositionY(100), 100);
Il codice probabilmente è sbagliato, però la logica credo che si capisca.