onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: [Tutoriel] Les tiles animés Mer 22 Juin 2011 - 12:17 | |
|
Apprendre le GML
Les tiles animés
1. Le problème
Je suis sur que nombreux se sont déjà posé la question, "Comment animer des tiles ?". En réalité il n'existe rien dans GM qui permet de faire cela sans bidouillage (et oui nos chers amis Yoyogames on beau avoir sorti 3 nouvelles versions depuis la 6.1 mais finalement ils oublient toujours l'essentiel). Je vais donc vous parler ici d'une (et peut être d'autres par la suite) technique qui fonctionne plutôt bien, même si elle a ses limites.
Il va falloir toucher a quelques fonctions qui permettent de manipuler les tiles, alors soyez prêts a ouvrir votre doc :p
2. Système d'animation
Tout d'abord, cette technique ne permet d'animer des tiles (du même layer) que de n frames (mais vous pourrez toujours bidouiller). Ensuite ça consomme un peu de mémoire, et selon la taille de vos room un temps de chargement au démarrage de celles ci. L’intérêt c'est que tout est automatique et plus simple, et que si vous l'utilisez correctement les défaut cités ci dessus ne se verrons certainement pas.
Ce système consiste a parcourir la room, regarder s'il existe des tiles et placer chacune de leurs frames sur des layers voisins. De cette manière, tous les n step on affiche le layer contenant la frame de l'animation actuelle et on cache les autres, ce qui nous donne un background animé.
Voici l'image que j'utiliserais. Commencer par l'ajouter a vos backgrounds dans GM.
Cochez la case "Use as tile set" et placez quelques tiles dans une room vide a un layer au choix qui serviras uniquement aux animations. Attention, il nous faut 8 layers vides consécutifs (8 étant le nombre de frame de notre animation ici). Si vous choisissez le layer 1000000 il nous faut les layers 1000001 a 1000007 de libres car ils contiendrons les frames suivantes de l'animation.
Maintenant créez un nouvel objet (il nous serviras a gérer les animations des tiles). Nous allons coder un méthode qui permettra de déposer les frames de l'animation pour chaque tile.
Dans Create : - Code:
-
FRAMES = 8 z = 1000000 // layer depth
// On parcours toute la carte a la recherche de tiles // animés (se situent sur le layer 1000000 dans cet exemple) for(i=0; i<room_width; i+=16) for(j=0; j<room_height; j+=16) { tile = tile_layer_find(z, i, j) if( tile ) { top = tile_get_top(tile) // si on en trouve un on ajoute chacune des frames comme tiles // a des layers différents for(t=1; t<FRAMES; t+=1) tile_add(tile_get_background(tile), 16*t, top, 16, 16, i, j, z+t) } }
// variables qui servirons a l'animation temp = 0 layer = 0
Maintenant il ne nous reste plus qu'a afficher le bon layer au cours du temps, que l'on gèrera avec la variable 'temp'.
Dans Step : - Code:
-
// permet de définir la vitesse d'animation temp += 1 if(temp mod 6) exit // l'animation se feras tous les 6 step
for(i=0; i<FRAMES; i+=1) { if(i != layer) tile_layer_hide(z + i) else tile_layer_show(z + i) }
layer = (layer+1) mod FRAMES
Voila, maintenant si vous placez votre objet dans la room ou les tiles doivent être animé, bah il s’animeront pendant le jeu (sans blague).
Pour ce qui avaient la flemme de tout lire voici un gm6 d'exemple : http://www.host-a.net/u/onilink_/tiles_animated.gm6
Dernière édition par onilink_ le Mer 22 Juin 2011 - 12:20, édité 1 fois |
|
Invité Invité
| Sujet: Re: [Tutoriel] Les tiles animés Mer 22 Juin 2011 - 12:20 | |
| excellent tutoriel comme d'habitude, bravo |
|
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Tutoriel] Les tiles animés Mer 22 Juin 2011 - 12:22 | |
| Merci :p
Si vous connaissez d'autres techniques n’hésitez pas a me demander d'ajouter une partie. |
|
Contenu sponsorisé
| Sujet: Re: [Tutoriel] Les tiles animés | |
| |
|