[ZS Engine] Ajouter un bouton "objet" supplémentaire

Démarré par MetalZelda, 29 Avril 2013 à 11:37

0 Membres et 1 Invité sur ce sujet

Bonjour :)

Tout est dans le titre, j'aimerais savoir quel script contient les boutons objets pour en rajouter un et le rendre opérationnel dans le jeu (la touche a assigner pour la rendre ok) et aussi quel script modifier pour modifier l'imput général (Changer toutes les touches correspondant à une fonction ...)

J'aimerais aussi savoir si il était possible de faire un "heart zooming" comme OOT, parce que dans "hud/heart.lua", il y'a une section "current heart"

Merci :)

Le moteur supporte de base deux touches d'objets équipés, mais tu peux utiliser game:on_key_pressed() pour ajouter d'autres comportements quand on appuie sur une touche. Tu peux ainsi appeler hero:start_item() pour déclencher l'utilisation d'un objet lorsque ta 3ème touche est appuyée.

Sinon, c'est quoi que tu appelles heart zooming ?
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

Citation
Sinon, c'est quoi que tu appelles heart zooming ?

Une animation sur le current heart qui fait que celui-ci grossi puis rétréci en permanence si je ne m'abuse :)

29 Avril 2013 à 12:12 #3 Dernière édition: 29 Avril 2013 à 12:38 par MetalZelda
Citation de: jibtou le 29 Avril 2013 à 11:59
Citation
Sinon, c'est quoi que tu appelles heart zooming ?

Une animation sur le current heart qui fait que celui-ci grossi puis rétréci en permanence si je ne m'abuse :)


Exact  :super:  :mrgreen:

Sinon y'aurais moyen d'avoir la liste des script a modifier pour le 3ème bouton  :mrgreen: ? (Comme ça dés que je rentre des cours je me met au taf)

Donc pour l'animation du cœur, rien ne t'empêche de faire un sprite animé habituel. Et de l'afficher à la place du dernier cœur.

Pour le 3ème bouton, c'est à toi d'organiser tes fichiers Lua comme tu veux ^^. Si c'était moi, je ferais cela dans equipment.lua où il y a déjà quelques éléments liés à l'équipment comme la gestion des petites clés et des flacons. Il va falloir retenir dans la sauvegarde le nom de la touche attribuée à ce slot numéro 3, et le nom de l'item d'équipement qui est dedans. Dans play_game.lua, faire un game:on_key_pressed() qui détecte quand cette touche est appuyée, et qui déclenche l'utilisation de l'item si le jeu n'est pas suspendu. Et aussi, compléter le HUD pour ajouter une troisième icône : pour cela, faire un script similaire à item_icon.lua mais qui gère le cas de ton slot d'item supplémentaire au lieu de gérer le cas des deux slots fournis par le moteur. Et appeler ce script depuis hud.lua comme pour les autres éléments du HUD.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

Citation de: Christopho le 29 Avril 2013 à 14:14
Donc pour l'animation du cœur, rien ne t'empêche de faire un sprite animé habituel. Et de l'afficher à la place du dernier cœur.

Pour le 3ème bouton, c'est à toi d'organiser tes fichiers Lua comme tu veux ^^. Si c'était moi, je ferais cela dans equipment.lua où il y a déjà quelques éléments liés à l'équipment comme la gestion des petites clés et des flacons. Il va falloir retenir dans la sauvegarde le nom de la touche attribuée à ce slot numéro 3, et le nom de l'item d'équipement qui est dedans. Dans play_game.lua, faire un game:on_key_pressed() qui détecte quand cette touche est appuyée, et qui déclenche l'utilisation de l'item si le jeu n'est pas suspendu. Et aussi, compléter le HUD pour ajouter une troisième icône : pour cela, faire un script similaire à item_icon.lua mais qui gère le cas de ton slot d'item supplémentaire au lieu de gérer le cas des deux slots fournis par le moteur. Et appeler ce script depuis hud.lua comme pour les autres éléments du HUD.

Oui, je comprends, pour l'animation je peux me baser sur l'animation quand les vies sont faibles, sa devrait aller (un resize est même conseiller ^^)

29 Avril 2013 à 20:14 #6 Dernière édition: 29 Avril 2013 à 20:22 par MetalZelda
Donc, j'ai fais l'animation en me basant sur le "danger" alert.

J'ai prévu de changer le frame_height et width pour ajouter un zoom, du moin, même si sa fais le zoom comme on le voit dans les vidéos de Zelda 64 Beta, sa devrait le faire ^^

zoom hud/heartzoom.png 4 200 0
0   16   16   16   0   0   6   6

Je pense que sa s'inclue dans hud/heart.lua dans les ligne 48 a 61 ...

J'aimerais savoir comment changer de direction car chaque direction contindra le zoom de chaque fragment de coeur (d'ou le 4) ?

Pourquoi il te faut un zoom par direction ? La barre de coeur n'est pas mono-direction ? Que dans ce cas t'as juste à laisser ta ligne et remplacer la première ligne par "zoom hud/heartzoom.png 1 200 0"... Après je suis ptet à côté de la plaque hein, mais je comprends pas pourquoi tu veux changer la direction d'un élément du hud ôO


Effectivement, si tu veux 4 animations différentes (une pour 1/4, 1/2, 3/4 et 1 cœur), une possibilité est d'utiliser 4 directions d'un même sprite. Rien ne l'empêche même si habituellement les directions des sprites sont utilisées pour représenter un personnage ou un ennemi ayant plusieurs directions.

Tu peux aussi faire 4 animations ayant chacune une seule direction. Ou même 4 sprites différents.

Bref c'est assez flexible. Personnellement je pencherais pour la première solution (4 directions) comme tu dis. Et donc pour répondre à ta question : il te suffit d'appeler sprite:set_direction().
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

29 Avril 2013 à 23:19 #9 Dernière édition: 29 Avril 2013 à 23:24 par MetalZelda
Citation de: Renkineko le 29 Avril 2013 à 22:29
Pourquoi il te faut un zoom par direction ? La barre de coeur n'est pas mono-direction ? Que dans ce cas t'as juste à laisser ta ligne et remplacer la première ligne par "zoom hud/heartzoom.png 1 200 0"... Après je suis ptet à côté de la plaque hein, mais je comprends pas pourquoi tu veux changer la direction d'un élément du hud ôO

Pour faire sa sur un seul PNG mais pour tous les coeurs ^^



C'est l'équivalent du dezoom dans Zelda 64 beta ...

Citation de: Christopho le 29 Avril 2013 à 23:05
Effectivement, si tu veux 4 animations différentes (une pour 1/4, 1/2, 3/4 et 1 cœur), une possibilité est d'utiliser 4 directions d'un même sprite. Rien ne l'empêche même si habituellement les directions des sprites sont utilisées pour représenter un personnage ou un ennemi ayant plusieurs directions.

Tu peux aussi faire 4 animations ayant chacune une seule direction. Ou même 4 sprites différents.

Bref c'est assez flexible. Personnellement je pencherais pour la première solution (4 directions) comme tu dis. Et donc pour répondre à ta question : il te suffit d'appeler sprite:set_direction().

J'opte pour la solution de directions, sa permettra d'aller plus vite je trouve^^

Effectivement, vu sous cet angle... ^^' Je pense que j'aurais fait 4 sprites différents pour ma part, enfin 4 animation sur un seul png avec chaque fois une seule ligne, après c'est mon avis et je suis pas un expert. Cela me semble surtout logique de changer une animation (car techniquement c'est une animation qui change) que de changer la direction de cette animation. Cela me semble plus... Compréhensible par le tout venant. D'autant qu'un simple "set_animation" suffit, donc c'est le même nombre de méthode je pense. Après je sais pas d'un point de vue technique/performance (même si c'est extrêmement minime) ce qui est le plus pratique. Au final ça revient au même sans doute =] Puis bon l'avantage du changement de direction c'est qu'on déclare qu'une seule fois l'animation et qu'au final on n'a que 5 lignes dans le fichier (pour cette partie j'entends), alors qu'avec un changement d'animation et non de direction on se retrouve avec 8 lignes dans le fichier...

Oui j'avance des arguments et des contre-arguments tous plus pourris les uns des autres, mais j'aime bien converser avec moi-même. Au final j'opte pour la direction avec un joli commentaire expliquant pourquoi cette étrangeté dans le code :p


Oui les deux méthodes se valent ^^
On peut aussi dire que le cœur qui zomme, c'est une seule animation (animation de zoom). Avec 4 variantes possibles. De ce point de vue là, c'est plus logique d'utiliser une direction :)
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

Citation de: Christopho le 30 Avril 2013 à 09:23
Oui les deux méthodes se valent ^^
On peut aussi dire que le cœur qui zomme, c'est une seule animation (animation de zoom). Avec 4 variantes possibles. De ce point de vue là, c'est plus logique d'utiliser une direction :)
Merci ^^

Pourras-tu nous informer de la sortie d'une nouvelle version du moteur sur le forum ? :p

Oui, il y aura une news sur le site et donc sur le forum.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus