Anuncios Google

Gravedad

Pues tengo una duda con la gravedad, el code es:

#define FLOOR (160<<8) 
s32 x;
 
s32 gravity = 32; 
s32 velocity_y = 0;
s32 spritey = 190<<8; 
s32 takeoffspeed = 1000; 
 
	while(1) 
	{		
		x+=Pad.Held.Right-Pad.Held.Left; PA_SetSpriteX(0,0,x);
 
		if(Pad.Held.B)
		{
		   x+=(Pad.Held.Right-Pad.Held.Left)*2;
		}   
 
		if((spritey <= FLOOR) && Pad.Newpress.A)   
		{ 
			velocity_y = -takeoffspeed;  
		}
 
		velocity_y += gravity; 
		spritey += velocity_y; 
 
		if(spritey >= FLOOR) 
		{
			velocity_y = 0;
			spritey = FLOOR;
		}	
 
		if (spritey>>8 > -32) PA_SetSpriteY(0, 0, spritey>>8); 
		else PA_SetSpriteY(0, 0, 175);				
 
		PA_WaitForVBL();
	}

y la duda es que al pulsar A y realizo el salto, lo normal es que no vuelva a saltar estando en el aire, pero si vuelvo a pulsar A aun estando en el "aire" sigue elevandose, como hago para que detecte que si se pulsa A en medio del salto no siga subiendo???

Gracias por vuestra futura ayuda. Salu222.


A que os mola la firma!!!


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de The Dark Master

Lo he mirado por encima.

Has puesto que si el sprite esta mas alto o igual de alto que el suelo y pulse A salte, igual si pones solo cuando sea igual al suelo lo soluciones.


Imagen de 123456abcdef

Es cierto, ya me di cuenta,

Es cierto, ya me di cuenta, ahora solo salta si esta tocando el suelo. Gracias.

PD: es que lo saque del ejemplo de palib...

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.