Deplacer un sprite en même temps qu'une map
Voilà un petit tuto, vite fait, qui vous apprendra comment déplacer un sprite en même temps qu'une map :)
1) Charger la map.
Bon, rien de difficile, mais si on le fait pas, qui le fera ??
PA_EasyBgLoad(0, //ecran
3, //Numero du BG (0-3)
Large); // Nom
2) Charger un sprite.
Même commentaire que pour la map :)
PA_LoadSpritePal(0, // ecran
0, // Numero de la palette
(void*)pacman_Pal); // Nom de la palette
PA_CreateSprite(0, 0,(void*)pacman_Sprite, OBJ_SIZE_16X16,1, 0, 0, 64);
Mais petit plus, on va animer le sprite !
// On anime le Sprite :D
PA_StartSpriteAnim(0,0,0,7,4);
3) Les variables...
Il nous faut quelques variables pour que tout se passe correctement !
// Nous allons bouger le BG, voila les variables
s32 scrollx = 0;
s32 scrolly = 0;
// On definit la position initiale du sprite.
int posx=200;
int posy=100;
//On definit deux variables pour le déplacement du sprite
int compteur=0;
int sens=0;
4) On fait bouger le tout !
On incrémente le scroll si les boutons sont appuyés.
scrollx += (Pad.Held.Right - Pad.Held.Left)*4; // Bouger de 4 pixels à la fois
scrolly += (Pad.Held.Down - Pad.Held.Up)*4; // Idem
On bouge le BG :
PA_EasyBgScrollXY(0, // Ecran
3, // Numero du BG
scrollx, // X scroll
scrolly); // Y scroll
et le sprite !
if(posx-scrollx<-16 || posx-scrollx>272 || posy-scrolly<-16 || posy-scrolly>208) PA_SetSpriteXY(0,0,257,192); //Si le sprite est hors de l'écran, on le place en 257 / 192, pour qu'il ne réapparaisse pas.
else PA_SetSpriteXY(0,0,posx-scrollx, posy-scrolly); //Sinon, on affiche le sprite à l'écran.
Maintenant, votre sprite se déplace en même temps que la map \o/
Mais ça sera encore mieux si il bougeait sur la map !!! non ?
// On change la position du sprite dans le bon sens
if(sens==0) posx++;
if(sens==1) posy++;
if(sens==2) posx--;
if(sens==3) posy--;
// On "regle" le sens de déplacement du sprite
compteur++;
if(compteur==30){
sens++;
compteur=0;
if(sens>3) sens=0;
}
Et voilà ! un sprite tout beau qui bouge sur une map :)
Topic: Deplacer un sprite en même temps qu'une map
Aucun message nʼ a été trouvé.