Heu en fait les largeur et hauteur doivent être des multiples de 16
56 de large c'est trop ou pas assez large, il faut choisir soir 48 soit 64
Je vais retailler et animer pour voir le rendu.
EDIT : ca rentre dans des cases de 48x48
Dernière modification par CeL, 05 mars 2010, 08h50.
J'avais mis 56 car multiple de 8, et parce qu'une des étape fais 51 ou 52 px de large. Je vais corriger ça. Le fichier d'origine vient de spritedatabase, je peux faire les autres anims si besoin.
Deux idées :
Remplacer les vies par une barre et faire en sorte que les boules fassent des dégâts en rapport avec leur taille
Donner un comportement différent aux boules suivant leur couleur (vitesse, angle du rebond, ...)
Des trucs simples, faciles quoi...
Je suis sur la construction de mes "structures de sprites", mais un truc déconne et je m'emmêle avec les pointeurs et les types de variables crées par NEODEV.
Ci dessous la création de ma structure SPRITE qui contiendra a terme les masques de collisions et d'autres détails
// ..:: Mes structures ::..
typedef struct {
TILEMAP tilemap; // Le tilemap utilisé pour le sprite en question.
int sequence[64]; // Les tiles utilisés dans l'ordre.
int dimensions[4]; // width_min, width_max, height_min, height_max.
} SPRITE, *PSPRITE;
Le "maptile" importé :
extern TILEMAP bullet[]; // Bullet de 6*1 (6 tiles de 1*1)
Et un affichage custom de sprite généré par la fonction habituelle. Aère ligne avec le maptile de base, et 2nde avec mon maptile SPRITE custom de la mort.
Mon C est assez rouillé, et je ne connais rien aux spécificités de la NEODEV, mais tu déclares dans ta structure une variable simple :
alors que ton bullet d'origine est un tableau
Vu que tu affectes ensuite le pointeur de l'un dans l'autre
ça me semble normal que tu n'aies que le premier élément de récupéré
Je suis d'accord, mais si je déclare mon "sprite.tilemap" comme un tableau, je suis obligé de déclarer la taille de celui-ci. J'ai testé en donnant comme taille 32 (amplement suffisant) et rien n'y fait. Le problème n'est pas dans la déclaration de la structure mais dans son initialisation.
je ne fonctionne qu'avec des images "Image ou fake crew" ^^
essayes comme suit sinon ce soir je pourrai tester :
Ça droit marcher ca.
j'ai pas accès au pc à partir de maintenant jusqu'a 20h
Petit test :
typedef struct {
TILEMAP tilemap; // Le tilemap utilisé pour le sprite en question.
int sequence[64]; // Les tiles utilisés dans l'ordre.
int dimensions[4]; // width_min, width_max, height_min, haight_max.
} SPRITE, *PSPRITE;
Je suis d'accord, mais si je déclare mon "sprite.tilemap" comme un tableau, je suis obligé de déclarer la taille de celui-ci. J'ai testé en donnant comme taille 32 (amplement suffisant) et rien n'y fait. Le problème n'est pas dans la déclaration de la structure mais dans son initialisation.
Toutafé, c'est pour ça que je te conseillerais plutôt de déclarer un pointeur sur TILEMAP dans ta structure, ce qui te permettrait d'avoir un lien vers n'importequ'elle taille de tableau ... j'utilise cette technique pour un projet perso, et ça fonctionne bien
Nouvelle avancée permettant de se creuser les neurones : Ca fonctionne super bien en définissant tile par tile.
typedef struct {
TILEMAP tilemap[32]; // Le tilemap utilisé pour le sprite en question.
int sequence[64]; // Les tiles utilisés dans l'ordre.
int dimensions[4]; // width_min, width_max, height_min, haight_max.
} SPRITE, *PSPRITE;
Toutafé, c'est pour ça que je te conseillerais plutôt de déclarer un pointeur sur TILEMAP dans ta structure, ce qui te permettrait d'avoir un lien vers n'importequ'elle taille de tableau ... j'utilise cette technique pour un projet perso, et ça fonctionne bien
Un petit exemple de code stp ?
typedef struct {
PTILEMAP *ptilemap; // Le tilemap utilisé pour le sprite en question.
int sequence[64]; // Les tiles utilisés dans l'ordre.
int dimensions[4]; // width_min, width_max, height_min, haight_max.
} SPRITE, *PSPRITE;
Ben tu gardes bien ta structure comme définie, puis tu affectes
Code:
bullet_1.tilemap=bullet;
Là bullet_1.tilemap contiendra l'adresse mémoire de ton tableau, que tu devras caster pour le passer à ta fonction write_sprite_data ...
Bon, je vais essayer d'installer l'environnement de dev pour pouvoir tester, parceque j'ai plus l'habitude de bosser en C++ qu'en C, donc c'est pas évident d'être précis
Edit : ton fichier n'est apparemment plus dispo ... tu peux le réuploader stp ?
Edit2 : laisse tomber, c'est megaupload qui se fout de ma gueule ...
Dernière modification par Runik, 05 mars 2010, 18h33.
Commentaire