Hola [chiu]
Como ya tengo vacaciones [360º], por fin me he podido poner en serio con mi proyecto de juego arcade de accion para GC, que porque para esa consola en concreto?? pues uno que es un enamorau de nintendo [tomaaa], pero al grano...
Primero explicare como lo hago en mi programa... la forma en que hago que el personaje detecte que ha pisado el suelo:
int HitDet(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2){ [color=#00bb00]// Deteccion de colision.[/color]
if(x1+w1>x2&&x1<x2+w2&&y1+h1>y2&&y1<y2+h2)
return 1;
return 0;
}
Y despues en el bucle principal del programa he metido:
m=0;
do
{
if(HitDet(player[0].x,[color=#FF0000][b]player[0].y+84[/b][/color],[color=#ff00ff][b]21[/b][/color],[color=#0000FF][b]1[/b][/color],base[m].x,base[m].y,[color=#00FFFF][b](base[n].width/2)-9[/b][/color],[color=#00FF00][b]1[/b][/color]))
[color=#00bb00]// Sprite prota: ancho pies (zona real apoyo) 24px y margen izq vacio (extender brazos, armas largas...) 18px
// Como la resolucion trabaja con x*2 en vez de x directamente...(24+18)/2=[color=#ff00ff][b]21[/b][/color]
// [color=#FF0000][b]player[0].y+84[/b][/color] para comenzar desde justo la parte superior del pie del prota
// [color=#0000FF][b]1[/b][/color] es para coger para el calculo solamente la "suela"
// [color=#00FFFF][b](base[n].width/2)-9[/b][/color] /2 es por la resolucion (x*2) y -9 (9*2=18px) para despreciar el margen ya comentado
// [color=#00FF00][b]1[/b][/color] sirve para que solo pueda haber colision con el borde superior de las plataformas[/color]
{
n=m; [color=#00bb00]// para otro calculo aparte...[/color]
fall=0;
}
m++; [color=#00bb00]// Compruebo todas las plataformas creadas, que de momento son 3[/color]
}
while (m<3);
Y viene la pregunta.......tatatachannnnn!!!!
Como puedo hacer para tambien detectar la colision con superficies inclinadas (una cuesta por ejemplo)???
Gracias, ciao