Anuncios Google

Un sprite se mueve con el Stylus y con el PAD.

Quisiera saver que devo modificár para que el sprite del siguiente código se pueda mover tanto con el PAD como con el Stylus. Aqui está el código:

// Includes
#include <PA9.h>       // Include for PA_Lib
 
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
 
s32 x = 0;    s32 y = 0;
// Funcion main
int main(int argc, char ** argv)
{
	PA_Init();
	PA_InitVBL();
	PA_InitText(1, 0);
	PA_InitText(0, 0);
	PA_OutputSimpleText(1, 9, 9, "Hola");
	PA_OutputSimpleText(0, 9, 9, "Adios.");
	PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);		
	PA_CreateSprite(0, 0,(void*)ratonstylus_Sprite, OBJ_SIZE_32X32,1, 0, 50, 50);
 
 
	// Bucle infinito
	while (1)
	{		PA_SetSpriteXY(0, 0,  Stylus.X-16, Stylus.Y-16); // Mover el raton conel Stylus
 
			// Mover el raton con el PAD
			x += Pad.Held.Right - Pad.Held.Left;
			y += Pad.Held.Down - Pad.Held.Up;
			PA_SetSpriteXY(0, 0, x, y);
 
 
		PA_WaitForVBL();
	}
 
	return 0;
}


Crea tu Trainer Card en FrenteBatalla.com<


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 exterminator

No puedes mezclar cosas

No puedes poner dos órdenes de actualizar posición de sprite con distintas variables, así no conseguirás nada. Borra todo el contenido del while (salvo PA_WaitForVBL();) y pon esto:

if(Stylus.Newpress)     PA_SetSpriteXY(0,0,Stylus.X,Stylus.Y);
if(Pad.Newpress.Anykey)
{
     x+=Pad.Held.Right-Pad.Held.Left;
     y+=Pad.Held.Down-Pad.Held.Up;
     PA_SetSpriteXY(0,0,x,y);
}

Salu2


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.

Imagen de mixsoft

So incluyo tu codigo queda asi:

// Includes
#include <PA9.h>       // Include for PA_Lib
 
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
 
s32 x = 0;    s32 y = 0;
// Funcion main
int main(int argc, char ** argv)
{
	PA_Init();
	PA_InitVBL();
	PA_InitText(1, 0);
	PA_InitText(0, 0);
	PA_OutputSimpleText(1, 9, 9, "Hola");
	PA_OutputSimpleText(0, 9, 9, "Adios.");
	PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);		
	PA_CreateSprite(0, 0,(void*)ratonstylus_Sprite, OBJ_SIZE_32X32,1, 0, 50, 50);
 
 
	// Bucle infinito
	while (1)
	{		
	   /*	// Mover el raton con el PAD
			x += Pad.Held.Right - Pad.Held.Left;
			y += Pad.Held.Down - Pad.Held.Up;
			PA_SetSpriteXY(0, 0,  Stylus.X-16, Stylus.Y-16); // Mover el raton conel Stylus
*/ 
			if(Stylus.Newpress)     PA_SetSpriteXY(0, 0,  Stylus.X-16, Stylus.Y-16);
			if(Pad.Newpress.Anykey){
			x += Pad.Held.Right - Pad.Held.Left;
			y += Pad.Held.Down - Pad.Held.Up;
			PA_SetSpriteXY(0, 0, x, y); }
 
 
		PA_WaitForVBL();
	}
 
	return 0;
}

No queda mal, pero tiene el problema que el PAD se mueve a tecla por tecla, y os movimientos del Stylus, se ven deformados, aqui tedejo el codigo compilado en un .NDS para que compruebes lo que digo:
http://www.megaupload.com/?d=3WHBVHVD
Descarga esto y veras lo que te digo del PAD y el Stylus, ¿no hay una forma de remediarlo?


Crea tu Trainer Card en FrenteBatalla.com<

Imagen de exterminator

Antes de nada

te advierto que no pude descargarme tu archivo (está temporalmente desactivado), pero guiándome por lo que me dices, imagino que se soluciona poniendo esto:

if(Stylus.Newpress)     PA_SetSpriteXY(0, 0,  Stylus.X-16, Stylus.Y-16);
else
{
      x += Pad.Held.Right - Pad.Held.Left;
      y += Pad.Held.Down - Pad.Held.Up;
      PA_SetSpriteXY(0, 0, x, y);
}

Prueba como te digo y me comentas.

Salu2


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.

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.