Anuncios Google

Duda sobre envolver sprites

Buenas a todos.

Veréis, tengo una duda que no sé bien cómo solucionar. Todos sabemos que, dependiendo del tamaño de la variable x e y, cuando un sprite llega a una determinada coordenada, éste vuelve a aparecer por el otro lado de la pantalla. Lo que decimos que se envuelve, vaya. El problema que tengo es que quiero fijar mi propio punto para que los sprites se envuelvan. Me explico.

¿Recordáis algunos niveles del Super Mario Bros 3? Había que subir para llegar al final, en lugar de avanzar hacia la derecha (lo más común). La particularidad de estos niveles era que se envolvían a los extremos de la pantalla, y si te ponías a medio salir por un lado, aparecía el resto por el otro.

Lo primero que pensé era, simplemente, que al llegar a tal valor la
coordenada, el sprite volviese a 0, y "ya ta", pero el efecto no era el
deseado (me aparecía por la izquierda de golpe).

¿Alguien me puede decir cómo conseguir que los sprites se envuelvan al salir de la pantalla? Concretamente, del borde izquierdo al derecho (lo que sería envolverse cada 256 píxels).

Agradezco toda ayuda que me podáis dar.

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.


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 best_guitar

He estado mirando un poco

He estado mirando un poco las ndslib, pero no saco nada en claro, buscaba un parametro en background.h pero lo he sabido ver o no está.

¿Has pensado de clonar el sprite cuando llegas al limite de la pantalla? Es decir, si el sprite hace 32 de ancho, a la que esta en posicion 256-31 (pegado a la derecha), es decir hay un pixel fuera de la pantalla, dibujar el segundo sprite con la misma animación que el primero, en la posicion 0-31, por norma general, debe aparecer un pixel del segundo sprite por la izquierda.

¿que te parece?¿se puede probar?

No se si me he explicado.

Saluds!

Imagen de best_guitar

he probado con este programa tonto y me ha ido bien

//Move a sprite using the keys...

#include <PA9.h>

// PAGfx Include
#include "all_gfx.h"
s32 x = 0;    s32 y = 0; // sprite position...

//Fonction principale du code
int main(void){

    PA_Init(); //Initialision of PAlib
    PA_InitVBL();
   
    PA_InitText(0,0);
   
    PA_LoadSpritePal(0, // Screen
                    0, // Palette number
                    (void*)logo_Pal);    // Palette name
   
    //Create the sprite
    PA_CreateSprite(0, 0,(void*)logo_Sprite, OBJ_SIZE_32X32,1, 0, 0, 0);
    PA_CloneSprite(0,1,0);
   
   
    while(1){ // Main loop
       
        // Update the position according to the keypad...
        x += Pad.Held.Right - Pad.Held.Left;
        y += Pad.Held.Down - Pad.Held.Up;
       
        // Set the sprite's position
        PA_SetSpriteXY(0, // screen
                       0, // sprite
                       x, // x position
                       y); // y...
        PA_SetSpriteXY(0, // screen
                       1, // sprite
                       x+256, // x position
                       y); // y...
       
        PA_WaitForVBL();
    }
    return 0;
}

Saluds!

Imagen de exterminator

Es que no sé decirte

Verás, en mi especie de pseudo-prueba-autoaprendizaje, los sprites tienen que colisionar usando el método de las coordenadas (vamos, el sistema de las "cajitas", cogiendo las 4 esquinas para calcular la colisión), y si no soy muy lúcido para conseguir una buena colisión entre dos sprites, imagínate si tengo dos sprites supuestamente los "mismos" :S.

En todo caso tardaré un ratillo en intentar hacerlo, tengo otros problemas. Cuando vea que pueda, pruebo tu sugerencia. Muchas gracias por responder.

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 best_guitar

ya, es un poco complicada la

ya, es un poco complicada la colision en ese sentido, cuando tengas que hacer 2 cajitas. Yo ahora mismo no se hacerlo de otro modo.

la pantalla en horizontal de izquierda a derecha, viene definida

128 pixels no visibles por la izquierda, 256 pixeles visibles, 128 pixels no visibles por la derecha.

No se si esta configuración está definida así por PAlib o ya es a nivel de ndslib, por que lo suyo seria quitar los pixeles no visibles de los extremos, y utilizar solo un sprite. Para hacerlo de este modo hay que esperar respuesta de los coders que conocen ndslib.

Saluds!

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.