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

Contribuez Discussion :

Copier les tiles d'un tileset (2D)


Sujet :

Contribuez

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut Copier les tiles d'un tileset (2D)
    Comme je trouve plus pratique de stocker des tiles en ne leur donnant qu'un numéro à chacune, j'ai cherché une méthode pour calculer la position X,Y dans un tileset d'un tile dont on ne possède que le numéro.

    Le X,Y du tile dans le tileset permet ainsi de le copier vers la future map.

    Comme j'aime bien partager des choses, je met la formule ici, si ça peut servir à quelqu'un :

    Identificateurs bidons (des noms) pour cet exemple :
    N=Numéro du tile à copier - 1 (on enlève 1).
    Xtiles=nombre de tiles dans la largeur du tileset.
    Ytiles=nombre de tiles dans la hauteur du tileset.

    Trouvons les coefficients pour notre formule :
    TY=coeficient pour la hauteur = Partie entière de (N/Xtiles).
    TX=coeficient pour la largeur = N-(TY x Xtiles).

    Trouvons X et Y :
    Y=TY x hauteur d'un tile.
    X=TX x largeur d'un tile.

    Exemple pratique :
    Un tileset qui contient 10 tiles dans sa largeur et 8 tiles dans sa hauteur.
    Le premier tile complètement en haut à gauche a le numéro 1 et le dernier en bas à droite a le numéro 80.
    On a donc 80 tiles (de 1 à 80).
    Admettons que chaque tile fait 32x32 (par exemple, on prend ce qu'on veut, c'est juste pour le calcul).

    Calculons par exemple la position X,Y du tile numéro 27 :
    (suffit de suivre la formule)

    TY = partie entière de (27/10) = 2
    TX = 26 - (2 x 10) = 6

    X = 2 x 32 = 64 pixels
    Y = 6 x 32 = 192 pixels

    Voilà, on peut maintenant copier le tile de la position X,Y pour l'envoyer à l'affichage de la map.

    Cette méthode est pratique dans le fait qu'on a juste à stocker les numéros des tiles et non pas : coordonnées + numéro.
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Bonjour

    Comme je ne peux pas éditer mon premier post, je rajoute une précision ici :


    EDIT : Précision !

    A propos de la formule utilisée :
    Si la numérotation de vos tiles commence à 0 alors N=Numéro du tile.
    Si la numérotation de vos tiles commence à 1 alors N=Numéro du tile - 1
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    C'est vrai, mais pourquoi ne pas utiliser un outil, pour définir les sprites à la souris puis charger les infos, par un fichier XML. Ainsi, on peut faire des animations à taille variable (chaque sprites peuvent avoir une taille différente).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    En effet, l'idéal c'est de pouvoir gérer des tiles de tailles différentes, mais ici je parle des tiles de sols pour la map (et des sols ont toujours la même taille).

    La gestion de tailles différentes est utile seulement pour les tiles de décors (maisons, arbres, etc).
    C'est aussi utile pour les personnages mais alors je n'aurais pas parlé de tilesets mais de charsets, donc de chars (sprites de personnages).

    Je n'ai pas bien saisi ton idée de l'outil.
    Sinon la méthode de faire un outil (pour remplir le XML) qui va servir à faire un outil (l'éditeur de maps), je trouve que c'est trop faire.
    Dans le code de ton éditeur de maps tu peux définir les dimensions de tes chars ou tiles, et l'éditeur se sert de ces valeurs quand l'image est sélectionnée pour la placer sur la map.
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  5. #5
    Inactif  

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Mars 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Mars 2013
    Messages : 162
    Points : 261
    Points
    261
    Par défaut
    Rho c'est compliqué ton code.

    Ca se règle en trois lignes ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int col, row, index, numColon;
    col = index % numColon;
    row = index / numColon;
    Mais normalement on fait ça plus proprement avec du binaire sur des dimensions power 2 (obligatoire dans tous les cas: sur du rendu gpu c'est imposé par la carte vidéo, et pour du rendu cpu il faut accélérer les calculs):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // code à l'init du moteur
    numColon = 1 << numColonShift;
    numColonMask = numColon-1;
     
    // code sur les routines
    col = index & numColonMask;
    row = index >> numColonShift;

Discussions similaires

  1. Copier les fichiers d'un répertoire dont la date est supérieure à x
    Par tatayoyo dans le forum Shell et commandes GNU
    Réponses: 17
    Dernier message: 03/10/2006, 14h28
  2. [Oracle 8.1.7] Copier les données d'un tablespace
    Par bobunny dans le forum Oracle
    Réponses: 2
    Dernier message: 01/12/2005, 14h34
  3. copier les MAJ SP2 d'1 Pc sur 1 autre
    Par DURVILLE dans le forum Windows XP
    Réponses: 4
    Dernier message: 26/08/2005, 09h15
  4. copier les infos d'une fenêtre dos vers le bloc notes
    Par beegees dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 16/08/2005, 13h06
  5. copier les attributs d un nouvel élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 23/09/2004, 10h05

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