Anuncios Google

Problemas con gravedad [Solucionado]

Bueno, al grano xDDD

Tengo un ligero problema con la gravedad, bueno, quizas algo mas que ligero:

He conseguido que el sprite salte (milagro), pero no se porqué, no se mueve, ni para izquierda ni para la derecha.

Dejo el main.c:

// Includes
#include <PA9.h>       // Include for PA_Lib
#include "gfx/all_gfx.h"
#include "gfx/all_gfx.c"
#include "escape.h"
s32 vy=0;
s32 y,x;
#define GRAVITY 48
 
// Function: main()
int main(int argc, char ** argv) {
PA_Init();    // Iniciar PA_Lib
PA_InitVBL();
	PA_InitText(1,0);
 
AS_Init(AS_MODE_SURROUND | AS_MODE_16CH);  // Iniciar
	x = 0<<8; y = (192-87)<<8; // el fondo de la pantalla... punto fijo
	vy = 0; // sin saltar
 
PA_LoadSpritePal (0, 1, (void*) boo_Pal);
 
PA_CreateSprite(0, 1, (void*)boo_Sprite, OBJ_SIZE_32X32, 1, 1, 5, 103);
 
// Comenzar la animación. Una vez iniciada, funciona por sí sola !
PA_StartSpriteAnim(0, // pantalla
		1, // número de sprite
		0, // el primer frame es el 0
		3, // el último frame es el 3, ya que tenemos 4 frames...
		8); // Velocidad, establecida a 5 frames por segundo...		
PA_LoadSpritePal(0, // Pantalla
		0, // Numero de paleta
		(void*)heroe_Pal);	// Nombre de paleta
 
PA_CreateSprite(0, // Pantalla
		0, // Numero de sprite
		(void*)heroe_Sprite, // Nombre de sprite
		OBJ_SIZE_64X64, // Tamaño de sprite
		1, // Modo 256 colores
		0, // Número de paleta
		99, 105); // Posicion X e Y en la pantalla
 
PA_LoadSpritePal(0,3,(void*)Arbol_Pal);
 
PA_CreateSprite(0,3,(void*)Arbol_Sprite,OBJ_SIZE_32X32,1,3,6,119);
 
PA_SetBrightness (1, 2);
PA_SetBrightness (0, 2);
PA_EasyBgLoad(0, 3, fondo);
PA_EasyBgLoad(0, 1, nubes);
PA_EasyBgLoad(1, 1, dialogos);
PA_EasyBgLoad(1, 3, dialogos2);
PA_EasyBgLoad(0, 2, fondo25);
PA_SetTextCol(1, 0, 0, 0);
 
 s32 nubesX= 0;
 s32 nubesY= 0;
 s32 fondoX= 0;
 s32 fondoY= 0;
 s32 fondo25X= 0;
 s32 fondo25Y= 0;
 s32 speed= 0;
 s32 corazones=10;
 s32 flores=5;
 
while (1) {  
if(!Pad.Held.Down && !Pad.Held.X && !Pad.Held.A) x += (Pad.Held.Right-Pad.Held.Left) *speed;
PA_OutputText(1,5,21,"%d", corazones);
PA_OutputText(1,26,21,"%d",flores);
if (PA_SpriteTouched(1)) {
   PA_OutputSimpleText (1, 4, 6, " Boo dice:\nBooersion alpha v.2.\n\n Mario dice:\nPuff...\nQue lentitud...");
   PA_StartSpriteAnim(0,1,4,7,8);
   PA_PlaySimpleSound(escape);
} 	
	if(Pad.Held.B)	speed=2;
	else speed=1;	
 
  PA_EasyBgScrollXY(0, 1, nubesX, nubesY);
  PA_EasyBgScrollXY (0, 3, fondoX, fondoY);
  PA_EasyBgScrollXY(0, 2, fondo25X, fondo25Y);
 
	if(Pad.Newpress.Right) {
		PA_StartSpriteAnim(0, 0, 0, 3, 8);	
		PA_SetSpriteHflip(0, 0, 0);
}    
	if(Pad.Newpress.Left) {
		PA_StartSpriteAnim(0, 0, 0, 3, 8);	
		PA_SetSpriteHflip(0, 0, 1);
}
	if ((Pad.Newpress.A) && (vy == 0)){  // Si presionamos el botón A y no está saltando ya.
		vy = -1000; // Empieza el salto
}
 
   if(Pad.Newpress.Down) {
      PA_StartSpriteAnim(0,0,19,19,8);
}   
   if(Pad.Newpress.X) {
		PA_StartSpriteAnimEx(0, 0, 6, 18, 10, ANIM_UPDOWN, 1);
}
 
  nubesX += 1;
	vy += GRAVITY;
	y += vy;
	if (y >= (192-87)<<8) {
		y = (192-87)<<8;
		vy = 0;
	}
 
if (vy != 0) PA_SetSpriteAnim(0, 0, 4); // Si está subiendo o bajando, el sprite está en pleno salto.
else if(!((Pad.Held.Left)||(Pad.Held.Down)||(Pad.Held.Right)||(Pad.Held.X))) PA_SetSpriteAnimFrame(0,0,0);
 
PA_SetSpriteXY(0, 0, x>>8, y>>8);
 
 PA_WaitForVBL();
 PA_CheckLid();
}
return 0;
} // End of main()	

Espero que me podais ayudar.

Gracias.


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 Draco el dragon

Gracias

Gracias, ya lo solucione.

Aunque no era eso solo, sino que habia puesto x<<8 abajo y no en unas lineas mas arriba¬¬

Bueno, gracias ;)

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.