Oppure

Loading
26/05/11 13:55
bios1993
Salve ragazzi volevo chiedere a chi ha più dimestichezza come posso scoprire una collisione laterale tra due rettangoli(tra due surface)

void PG::collide(EVENT e[],int n)
{
	terra =false;
	bloccolato=0;
	for(int i=0;i<n;++i)
	{
		if((x+xpiedi+wpiedi>e[i].x) && (y+ypiedi+hpiedi>=e[i].y) && (x+xpiedi<e[i].x+e[i].w) && (y+ypiedi<=e[i].y+e[i].h))
		{
			g = 10;
			terra = true;
		}
		if((x+xpiedi+wpiedi>e[i].x) && (ybuffer+ypiedi+hpiedi>e[i].y) && (x+xpiedi<e[i].x+e[i].w) && (ybuffer+ypiedi<e[i].y+e[i].h))
		{
			g = e[i].y-(y+ypiedi+hpiedi);
		}

	}


questa funzione gestisce bene solo la "collisione globale"
aaa
26/05/11 15:53
TheKaneB
questi algoritmi così elementari sono stati già studiati e risolti in un miliardo e mezzo di modi diversi...


Quello che ti serve è il primo algoritmo mostrato in questa pagina: gamedev.net/page/resources/_/reference/programming/game-programming/collision-detection/…

Se vuoi approfondire consulta gli altri tutorials di gamedev.net e di gameprog.it

Ciao ;)
aaa
27/05/11 9:49
bios1993
scusa ma forse non hai capito la mia domanda, io avevo chiesto uno spunto su come gestire la collisione laterale.quello che mi hai dato tu l'ho fatto nel primo e nel secondo if
aaa
27/05/11 14:24
TheKaneB
Postato originariamente da bios1993:

scusa ma forse non hai capito la mia domanda, io avevo chiesto uno spunto su come gestire la collisione laterale.quello che mi hai dato tu l'ho fatto nel primo e nel secondo if


a sto punto la domanda sorge spontanea: che intendi per "collisione laterale"?
Se fai un disegno con un semplice schema almeno ci capiamo tutti
aaa
27/05/11 15:45
bios1993
intendo come faccio a riconoscere la collisione a destra o la collisione a sinistra di una Surface
aaa
27/05/11 16:04
TheKaneB
Postato originariamente da bios1993:

intendo come faccio a riconoscere la collisione a destra o la collisione a sinistra di una Surface


con l'algoritmo che ti ho linkato
aaa
27/05/11 16:57
bios1993
si lo so, anche quello che ho postato io lo fa, il mio unico problema è capire però da quale lato della surface capita la collisione.
aaa
27/05/11 17:00
TheKaneB
Postato originariamente da bios1993:

si lo so, anche quello che ho postato io lo fa, il mio unico problema è capire però da quale lato della surface capita la collisione.


traducendo, quello che ti interessa è il "vettore di penetrazione".

Se avessi sfogliato quei siti che ti ho già linkato avresti già trovato la soluzione... hai la fortuna di avere internet e non sai nemmeno come usarlo? 8-|
aaa