Voir les messages sans réponses | Voir les sujets actifs Nous sommes le 20 Mai 2013 17:29



Répondre au sujet  [ 7 messages ] 
 Sprites 
Auteur Message
Débutant
Débutant
Avatar de l’utilisateur

Inscription: 14 Juil 2009 14:23
Messages: 18
Je profite de ce message pour vous dire bonjour a tous

j'ai quelques problèmes avec les sprites :
-quand j'affiche un sprite(que le joueur n'est pas sensé contrôler) il apparait plusieurs fois sur un fond 1024x384
- il bouge quand je m'approche des limites(le background ne "scroll" plus mais le sprite continu de "scroller" dans le sens opposé)

merci

ps:je n'arrive pas non plus a utiliser les fichiers .raw pour le son malgrès le super tutoriel de palibinfo en français


le fichier nds:http://rapidshare.com/files/255777394/D_mon_Vert.nds.html
(j'apprends en même temps donc rien n'est parfait et je n'ai pas encore commencer a programmer les collisions)


Dernière édition par Sushi le 16 Juil 2009 23:21, édité 1 fois.



14 Juil 2009 16:44
Profil
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription: 07 Aoû 2007 9:04
Messages: 7000
Localisation: Maubeuge
Message 
Je pense comprendre ton soucis, la position du sprite doit se faire en tenant compte du scroll et il ne semble pas l'être, si je peux voir ton code pour pouvoir t'aider !

_________________
Image


14 Juil 2009 19:15
Profil Site Internet
Débutant
Débutant
Avatar de l’utilisateur

Inscription: 14 Juil 2009 14:23
Messages: 18
Message 
------je charge la palette et place le squelette------

Code:
   squelx = 300;
   squely = 99;
   PA_LoadSpritePal(ECRAN_BAS, 1, (void*)sprite1_Pal);
   PA_CreateSprite(ECRAN_BAS, 1, (void*)squel_Sprite, OBJ_SIZE_32X32, 1, 1, squelx, squely);


------"ECRAN_BAS" est une constante valant 0, squelx et squely les coordonnées du sprite ------
et scrollx et scrolly les coordonées du background

Code:
   PA_SetSpriteXY(ECRAN_BAS, 1, (squelx-32)-scrollx, (squely-32)-scrolly);


------Les coordonnées du Bg augmentent en fonction du pad(donc du déplacement)------

Code:
   scrollx += (Pad.Held.Right - Pad.Held.Left)*4;
   scrolly += (Pad.Held.Down - Pad.Held.Up)*4;



j'ai un très gros problème sur la présentation (en général) aussi bien dans mon code que sur un forum (donc si c'est peu compréhensible dites le moi).
Et merci d'avoir répondu si vite!!!


14 Juil 2009 22:01
Profil
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription: 07 Aoû 2007 9:04
Messages: 7000
Localisation: Maubeuge
Message 
J'ai fait une simulation et je n'ai pas ce soucis de position, il faut rendre invisible ton squelette si il n'est pas dans le champ de visibilité.

Code:
#include <PA9.h>
#include <stdio.h>

#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

typedef struct
{
   s32 x, y;
}herotype;
herotype dragon;

s32 scrollx, scrolly;
s32 squelx, squely;

int i;

int main(void)   {
   PA_Init();
   PA_InitVBL();

   PA_InitText(1, 0);

   PA_LoadSpritePal(0, 0, (void*)dragon_Pal);
   PA_LoadSpritePal(0, 1, (void*)squelette_Pal);

   PA_EasyBgLoad(0, 2, decor);

   dragon.x = 0;
   dragon.y = 0;

   scrollx = 0;
   scrolly = 0;
   
   squelx = 300;
   squely = 99;

   PA_CreateSprite(0, 0,(void*)dragon_Sprite, OBJ_SIZE_32X32,1, 0, dragon.x, dragon.y);
   PA_CreateSprite(0, 1,(void*)squelette_Sprite, OBJ_SIZE_32X32,1, 1, squelx, squely);

   while(1)
   {
      //On bouge le scroll seulement si le dragon va au bord des écrans
      if ( dragon.x - scrollx > 160 && dragon.x < 1024-128 ){
         scrollx = dragon.x - 160;   
      }
      else if ( dragon.x - scrollx < 64 && dragon.x > 64 ){
         scrollx = dragon.x - 64;      
      }
      if ( dragon.y - scrolly > 112 && dragon.y < 384-96 ){
         scrolly = dragon.y - 112;
      }
      else if ( dragon.y - scrolly < 48 && dragon.y > 48 ){
         scrolly = dragon.y - 48;      
      }

      //On affiche le squelette seulement si ses coordonnés entrent dans la position du scroll
      if( (squelx <= scrollx + 256) && (squelx >= scrollx - 32) && (squely <= scrolly + 192) && (squely >= scrolly - 32))
      {
         PA_SetSpriteXY(0, 1, squelx - scrollx, squely - scrolly);
      }
      else
      {
         //on le sort de l'ecran mais on peut aussi imaginer le foutre sur une frame transparente
         PA_SetSpriteXY(0, 1, -32, -32);
      }

      PA_LargeScrollXY(0, 2, scrollx, scrolly);
      PA_SetSpriteXY(0, 0, dragon.x - scrollx, dragon.y - scrolly);

      dragon.x += (Pad.Held.Right - Pad.Held.Left) * 4;
      dragon.y += (Pad.Held.Down - Pad.Held.Up) * 4;

      PA_WaitForVBL();
   }

   return 0;
}

_________________
Image


15 Juil 2009 7:53
Profil Site Internet
Débutant
Débutant
Avatar de l’utilisateur

Inscription: 14 Juil 2009 14:23
Messages: 18
Message 
merci

mais c'est quoi
Citation:
#include <stdio.h>


(je pense qu'avant de finir ce petit jeu je vais mieux m'impregnier des tutoriels , surtout les maths)


par contre aucun rapport avec les sprites mais comment convertir des .mp3 en .mod ou comment utiliser les fichiers .raw avec la palib (j'ai essayé comme décrit dans le tuto son mais sa marche pas)


15 Juil 2009 18:46
Profil
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription: 07 Aoû 2007 9:04
Messages: 7000
Localisation: Maubeuge
Message 
On ne peut pas modifier un mp3 en mod sinon pour les raw, regardes les exemples inclus dans palib :)

_________________
Image


15 Juil 2009 21:47
Profil Site Internet
Débutant
Débutant
Avatar de l’utilisateur

Inscription: 14 Juil 2009 14:23
Messages: 18
Message 
j'ai réussi a mettre du son

le tutoriel contenait une erreur(je l'ai corriger mais il faudrait le revoir)

sinon voila le petit jeu(j'ai quelques idées sympa pour le gameplay)
http://rapidshare.com/files/256641401/Demon_Vert.nds.html


16 Juil 2009 23:22
Profil
Afficher les messages postés depuis:  Trier par  
Répondre au sujet   [ 7 messages ] 

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF.
Traduction par phpBB-fr.com