![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Ouvrir sur le forum | Recherche | Messages du jour | Marquer les forums comme lus |
Publicité |
![]() |
|
Outils de la discussion | Modes d'affichage |
![]() |
#1 |
Membre
Date d'inscription: 18/01/2008
Messages: 37
|
![]() Jour 12: Créer une animation pour vos sprites (méthode 1) par PJEFF Bonjour. Bienvenue dans la suite des tutoriels consacrés au développement sur PSP. Pour des raisons évidentes j’ai repris les tutoriels déjà existants pour les adapter à ce qui suivra. Je ne vais commenter que le code ajouté, pour le reste référez-vous aux anciens tutoriels. Petite question voulez vous encore d'autre cours ?? un peu plus avancés ? Ce que nous allons voir aujourd'hui c'est comment faire un système d'animation très simple pour vos sprites ou vos personnages. Attention !!! ce système ne peut pas convenir a tout le monde ou à tout les type de jeux, c'est pourquoi nous verrons plus tard 1 ou 2 autres méthodes complémentaires. Note : dans ce cours qui n'est pas compliqué en soi, il vous faudra manipuler les pointeurs donc n'hésitez pas à réviser les base ![]() Car ça reste un élément indispensable (les pointeurs bien sur ) A NOTER QUE SUPER MARIO TOY A ETE FAIT SUR CETTE BASE LA (pour vous donner une indication des possibilités) 1) Déclaration générale Donc là dans un premier temps on va créer des structures pour gérer tout ça, tout va partir de là ![]() Code PHP:
2eme structure utile, notez que cette fonction est presque vide mais je vous invite à rajouter certains éléments suivant vos besoin, comme vx et vy pour la vitesse du personnage, y compris le nécessaire pour vos collisions entre sprites nécessaire et PROPRE a chaque sprite !! Je ne sais pas si je me fait bien comprendre. Code PHP:
2) Les fonctions A partir de là on a planté le décors donc on va créer notre première fonction pour créer nos sprites. Code PHP:
Maintenant on va donner la possibilité d'arrêter ou de reprendre l'animation. Là je pense que les commentaires du code seront plus que suffisants ![]() Code PHP:
Maintenant on va faire le changement d'animation automatiquement ![]() simple et efficace. Code PHP:
Maintenant on va donner la possibilité de supprimer l'objet (l'animation) Code PHP:
Une autre petite fonction utile : on va permettre de faire une pause sur une Frame en particulier (ça peut être utile en cas d'animation pour une intro ou autre ....) Code PHP:
Maintenant on va voir comment faire un Reset de l'animation en cours. On veut tout simplement remettre l'animation sur la première frame assez rapidement. Code PHP:
Maintenant et ça reste indispensable on va donner la possibilité de changer facilement la position de l'animation. (petit rappel) une position = une ligne ex: ligne 1 = animation marche gauche ligne 2 = animation marche droite ligne 3 = animation saut ...... Code PHP:
Maintenant on va donner la possibilité de faire un effet miroir d'un sprite, idéal quand on ne veut pas faire plusieurs fois la même animation pour gauche et droite par exemple qui en réalité sont la même image mais inversée. (hé oui faut penser à tout) Code PHP:
[b]3) Le système d'affichage de l'animation Maintenant que on a créé plusieurs fonctions, il faut pouvoir afficher le sprite ou l'animation ça pourrait être pratique. Dans l'optique où l'on peut faire un effet miroir à l'animation j'ai du reprendre une fonction de brunni et la modifier pour l'adapter au besoin. Code PHP:
Il nous reste plus que la fonction pour afficher le sprite et c'est terminé pour le moment ![]() Code PHP:
Exemple concret on va animer quelques sprites : ![]() ![]() ![]() ![]() Code PHP:
Voici le code source de ce que l'on a vu dans ce cours annimation.rar Je ne sais pas si j'ai été suffisament clair dans ce tutorial, si besoin je rajouterais des précisions. Merci d'editer mon post pour corriger les fautes d'orthographe ![]() Dernière modification par Yodajr ; 31/07/2008 à 13h27. Motif: 1er passage de correction, il doit en rester peut être |
![]() |
![]() |
Publicité |
![]() |
#2 |
Administrateur
Date d'inscription: 09/11/2005
Messages: 3 750
|
![]() Merci pour le tuto
![]() Je commence à corriger... Mais un conseil : si tu as Firefox, installe le plugin "Dictionnaire HunSpell en français (réforme 1990)" Il ne pourra pas corriger tes fautes de grammaire, mais soulignera en rouge tes fautes d'orthographe et te fera une liste de propositions avec un clic droit (comme dans word) |
![]() |
![]() |
![]() |
#3 | |
Membre
Date d'inscription: 30/11/2008
Localisation: Devant mon PC
Messages: 6
|
![]() merci pour ce tut !!
cependant, une question quand même : au début de la fonction DevsCreerSprite, il est écrit ceci : Citation:
car ce que je vois ici, c'est qu'on vérifie que obj est null ; si c'est le cas, on va libérer la mémoire qu'il occupe s'il n'est pas null... y'a pas comme un truc qui vous dérange dans cette dernière phrase ?? ![]() si obj est null, c'est que malloc à foiré, donc pas d'allocation mémoire, donc pas besoin d'en libérer puisqu'elle n'a pas été allouée... en outre, le "free(obj)" ne s'exécutera JAMAIS puisqu'on est dans un bloc qui contrôle que obj n'existe pas... donc cette ligne ne sert à rien. chapeau quand même de penser à libérer la mémoire en toute circonstance, peu de programmeurs aujourd'hui ne pensent à ce genre de détails qui font planter un système d'exploitation !! ![]() bref, ces 4 lignes peuvent se synthétiser en 2, ça ne changera rien à l'utilisation : Code:
if( !obj ) return NULL; sinon, super ce tut ![]() ![]() |
|
![]() |
![]() |
![]() |
#4 |
Super Modérateur
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
|
![]() Je pense que c'est du copier / coller ou alors une (trop bonne) habitude
![]() En tous cas presque toujours quand tu libères un objet tu fais if (obj) free(obj); pour éviter de le libérer s'il n'a pas été créé ![]() |
![]() |
![]() |
![]() |
#5 |
Membre
Date d'inscription: 24/03/2008
Messages: 26
|
![]() Petit problème, lors de la compilation:
1>animation/animation.c: In function 'DevsDrawImageSimpleFlip': 1>animation/animation.c (28) : warning: implicit declaration of function 'oslImageGetAutoStrip' 1>animation/animation.o: In function `DevsDrawImageSimpleFlip': 1>animation.c ![]() Comment résoudre ce problème ? =/ |
![]() |
![]() |
![]() |
#6 |
Administrateur
|
![]() peut être une mauvaise version d'oslib, vérifie si la méthode existe dans l'oslib que tu as installé
__________________
Projets Abandonnés: [Arcomage Advance] [Puzznic] [PA Card Games] [Blob Runner] Projet en cours: [Ne plus abandonner de projet...] |
![]() |
![]() |
![]() |
#7 |
Membre
Date d'inscription: 24/03/2008
Messages: 26
|
![]() Problème d'OSLib effectivement, j'avais la 2.0 au lieu de la 2.10
![]() |
![]() |
![]() |
![]() |
Liens sociaux |
Publicité |
Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
Outils de la discussion | |
Modes d'affichage | |
|
|
![]() |
||||
Discussion | Auteur | Forum | Réponses | Dernier message |
![]() |
GuZnaK | Articles et Tutos | 34 | 08/12/2007 22h24 |
[Tuto] Jour 3 : Colorer un Jeu Gameboy - Expert | omg | [DEV] Projets Colorisation GB | 20 | 07/11/2007 14h52 |
![]() |
nacimem | Tutoriels | 27 | 28/10/2007 16h03 |
Une nouvelle mise à jour pour le CF 3.51M33 | Riolehh | Les News | 5 | 25/07/2007 16h22 |