IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SFML Discussion :

Animation de tiles. [SFML 2.0]


Sujet :

SFML

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Par défaut Animation de tiles.
    Bonjour à tous.

    Dans le but de passer le temps, je m'amuse à réaliser un "Mario like" (Super original me direz vous...).

    Je créé mes maps avec Tiled et les lis et affiche avec les bibliothèques "TMX parser" et "TSX parser".

    Mon souci est que j'ai des tuiles animées et je ne trouve aucun tuto ou bribe de code qui indiquent comment gérer ces animations.

    J'ai quelques idées mais j'aimerais avoir votre avis si c'est correct ou voir si il y a pas plus simple ou mieux à faire.

    Dans Tiled je créé mes animations et les enregistre dans mon fichier tsx.

    Quand je lis ma map (enregistrée dans un tableau X,Y,Z (Z étant le numéro de calque)), je vais voir les propriétés de la tuile à afficher, propriétés qui se trouvent dans un tableau (image de mon fichier tsx).

    Si c'est une tuile animée, alors je réalise l'animation.

    Pour faire un essai, j'ai 4 tuiles animées que je souhaite afficher.
    Cette animation se fait sur 4 images différentes.

    J'ai donc essayé de faire ceci (sans gérer le temps pour le moment) :

    mes animations sont sous forme anim0 = tuile X, anim1 = tuile X+1, etc...

    Créé une variable temporaire image de ma tuile animée (varTemp).
    
    Cherche le numéro X de la tuile a afficher en position X,Y,Z.
    Si ma tuile numéro X est animée,
      Si varTemp < numéro X
        Enregistre le numéro de ma tuile dans varTemp.
      Sinon
        varTemp++
     
      Si varTemp == numéro X + 4
        varTemp = numéro X
     
    numéro X = varTemp
    
    affiche (numéroX).
    en gros ça fonctionne MAIS comme mon animation est sur 4 blocs et que j'affiche 4 blocs, j'ai chaque bloc qui me prends une valeur de tuile et j'ai pas d'animation. premier bloc = anim 0 second bloc anim 1 etc... et quand reviens le premier bloc, varTemp = numéro X donc on reviens a la première image de l'animation.

    J'ai donc pensé à faire un std::map d'une structure "animation" avec comme identifiant la valeur X,Y,Z.
    De ce fait, j'aurais mes 4 blocs indépendants avec une animation distincte entre eux.
    Mon problème c'est que je créé 4 fois la même animation (1 foi par bloc) et ça me semble pas optimisé.
    Si je me retrouve avec 30 blocs identiques, j'ai 30 fois la même chose de stocké en mémoire. Pas cool.

    du coup je me demande si c'est la bonne solution, ou si j'ai TOUT faux ?

    Merci pour vos retours et de m'avoir lu jusque ici.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 146
    Billets dans le blog
    4
    Par défaut
    C'est un peu brouillon mais c'est l'idée.
    Ne te soucie pas des optimisations pour le moment.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Par défaut
    ok je vais y aller comme ça alors.

    Il y a pas moins "lourd" ?

    merci.

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Pour ma part , je fais les animation de tuiles comme sur vielles consoles.
    Tu met un flag sur une tuile , vu que les data de ma map sont id+miroir HV + anim
    Et quand ce flag est activé , ça lis tout simplement la tuile suivante (chez moi les 2 ou 4 prochaines tuiles).
    Et j'ai une variable qui indique la vitesse d'animation.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Par défaut
    Bonjour et merci pour vos réponses.

    J'ai fini par faire un tableau de pointeurs pour chaque tuiles animées.

    Ces tuiles ont un chrono individuel que je réinitialise à chaque changement d'animation.

    Le pointeur lui me pointe vers mon tableau de propriété des tuiles (lu dans mon fichier TSX).

    Du coup ça fonctionne nickel et c'est pas gourmant en ressources.

    Kannagi :

    J'ai pas compris quand vous parlez de "flag" de ""miroir" et "HV" ??

    c'est mieux que mon système du coup ?

    Merci je passe le sujet en résolu .

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par Vidou12 Voir le message
    Kannagi :

    J'ai pas compris quand vous parlez de "flag" de ""miroir" et "HV" ??

    c'est mieux que mon système du coup ?
    De mon point de vue oui , ton système me semble assez lourd à gérer.
    miroir HV pour dire miroir Horizontal/Vertical (ou flip Horizontal/Vertical ).

    Sinon tu enregistre que le id pour tes data rien d'autre ?
    Pour ma part j'enregistre le id , le flip HV , + un petit flag supplémentaire (pour indiquer différente animation ou afficher/ne rien afficher ).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SDL 2.0] Problème d'affichage (Animation Tile SDL2)
    Par Jeano81 dans le forum SDL
    Réponses: 8
    Dernier message: 24/09/2015, 13h07
  2. Comment ne pas rejouer une animation après un clic ?
    Par mmmmhhh dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/09/2002, 16h11
  3. [Composants][Animation] Lire une vidéo compressée
    Par femtosa dans le forum Composants VCL
    Réponses: 6
    Dernier message: 03/09/2002, 08h03
  4. Rx Controls Gif animés
    Par toufou dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/08/2002, 14h09
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo