Hola, como las colisiones por cajas son un poco coñazos por todo lo que has de escribir he decidido hacer una funcion, aqui os la dejo y espero que os sea util ;)
int CH_ColisionCajas(u16 x1,u16 y1,u16 x2,u16 y2,u8 anchox1,u8 altoy1,u8 anchox2,u8 altoy2){//posicion x del sprite 1/posicion y del sprite 1/posicion x del sprite 2/posicion y del sprite 2/ancho del sprite 1/ alto del sprite 1/ancho del sprite 2/ alto del sprite 2 if(((x1<=x2+anchox2 && x1>=x2+anchox2) || (x1<=x2+anchox2 && x1+anchox1>=x2)) && ((y1<=y2+altoy2 && y1>=y2) || (y1+altoy1<=y2+altoy2 && y1+altoy1>=y2))){ return 1;}//si la colision se efectua devuelve 1 else{ return 0;}//si la colision no se efectua devuelve 0 }
Vale, esta es la funcion
Y ahora un ejemplo de como usarla
//logicamente antes hemos crado los sprites 1 y 2 posy += (Pad.Held.Down-Pad.Held.Up); //movemos el sprite, algo basico posx += (Pad.Held.Right-Pad.Held.Left); if(CH_ColisionCajas(posx,posy,128-8,96-16,32,16,16,32)==1){//colocamos todos los datos, y le metemos un ==1, es decir si la colision devuelve 1 (si hay colision) ocurre lo que sea, en este caso escribimos un texto PA_OutputText(1,0,0,"Colision"); }else PA_OutputText(1,0,0," "); PA_SetSpriteXY(0,0,posx,posy); //aqui actualizo la posicion del sprite que muevo
y ya esta, asi de facil y rapido, espero que os haya servido de ayuda ;)
Solo necesito vuestra opinion de que os parece y de como podria mejorarla(si se puede, pero seguro que sabeis como hacerlo los de arriba)
Aqui os dejo un video que demuestra su funcionamiento y explica como usarla si no lo has entendido arriba, no lo subo a youtube porque perdia mucha calidad y las letras se veian borrosas, miradlo en pantalla completa y lo vereis todo bien.
:0
Es buena idea, no se me habia ocurrido hacer una funcion para colisiones, siempre ponia un comentario al final de todo lo copiaba lo pegaba y cambiaba valores D:
P.D.: CH... ._.
Street Fighter X Tekken Mobile CMV 2
CH_
Si,CH, es que no se me ocurria nada mas :P
Ya
Ni SC, ni SI, ni JS, ni ID, ni IHD, ni... _, no, no habia nada mas xD
Suerte en el scenery ;D
CH de CHeleon ¬¬
CH de CHeleon ¬¬
Y
De los "CHetos".
(Sin asunto)
Uno de esos me acabo de comer hoy :P.
No soy moderador pero os aviso de que de un momento a otro llegará edu y entonces....
vale, este comentario es el
vale, este comentario es el ultimo
Los pandilla estos son mis preferidos
:PPPPPP (la lengua es de babear xD)
Ala...
xD esos no los venden aquí en México xD.
muy buena pero he seguido los
muy buena pero he seguido los pasos del tutorial en video y nada lo atraviesa como si nada y sin decir ni mu
Asegúrate de que el anchox1 y
Asegúrate de que el anchox1 y el altox1 sean menores que el anchox2 y el altox2.
Ejemplo:
Uso Correcto:
BoxCol(X1,Y1,X2,Y2,8,8,16,32)==1)
Uso Incorrecto:
BoxCol(X1,Y1,X2,Y2,16,32,8,8)==1)
Salu2tS!
Tenemos el windows 7 igual xDD
"Fallo" en tu código(vídeo): Cuando creas un Sprite en el argumento donde pones las coordenadas, no hace falta ponerle coordenadas variables de eso ya se encarga el PA_SetSpriteX"Y"(arg);
Se tendría que hablar, pero creo que se podría añadir el tuto del 5 día.
Salu2tS!
Ya bueno, pero es una
Ya bueno, pero es una costumbre que tengo, asi se de que sprite es cada variable
PD: Ponte al msn tengo que hablarte de eso...
PD2:La colision por cajas que explican en el tuto del dia5 esta mal, ya deje la solucion en un comentario, espero que lo editen pronto
Genial :D
Esto me sera útil, gracias ;).
De nada, espero que te
De nada, espero que te facilite las cosas mi primera funcion ;)
Esto va a programación
Ya que no es ningún homebrew/tutorial que podamos pasar a portada, así que ésto debería ir a programación (corregidme si me equivoco).
SaluDTs
Mi historia, del principio al fin
Así es, estás en lo cierto edu.
Te las has currado Cheleon, te ha quedado muy bien, seguro que la uso más de una vez.
Salu2tS!
;)
THX :D, poco a poco voy aprendiendo
Igualmente! :P
ya esta, movido, gracias por
ya esta, movido, gracias por el aviso
aunque yo creia que era un aporte...