Accueil - Forum - Bibliothèque de ressources
____

Faire une Pop Up de dégâts sur le héros sur la carte



But : Afficher une Pop Up de dégâts comme pendant les combats mais cette fois ci sur la carte et sur le héros. La Pop Up s'affiche quand le héros via un évènement (contact, processus parallèle ...etc.)



Ce que vous devez connaitre :
Il est conseillé d'avoir quelques bases en Ruby et RGSS et de posséder la documentation. Pour le RGSS, nous allons manipuler les Sprites.

I) Le principe.

Au contact de l'évènement, nous allons appeler une variable. Dès que cette variable est activé, le script exécute un morceau de code qui va afficher la Pop Up. Juste après, la variable est désactivé afin d'éviter des Pop-Ups à l'infini.

Le principal est déjà fait, RPG Maker nous donne déjà des méthodes pour afficher une Pop-Up (voir documenation) :
- damage(valeur, critique) : affichage du Sprite "Pop-Up"
- effect? : Savoir si le Sprite "Pop-Up" est actif.

La difficulté est surtout la suivante : sur quel Sprite allons nous l'afficher ? Nous voulons l'afficher sur le héros donc il faut retrouver le Sprite "Héros". Pour cela, nous allons aller dans le script "Spriteset_Map".

II) Trouvons le Sprite "Héros" dans le script "Spriteset_Map"

Quand on commence le jeu, Ruby va "installer" le décors sur l'écran. Cette classe, "Spriteset_Map", va afficher les images tels que le Tilesets, Auto-Tiles, Brouillard ... et les Sprites. Evidemment, il ne fait pas le tout en même temps, il y a un ordre.

C'est principalement la méthode "initialize" qui va nous intéressé. C'est dans cette méthode qu'on voit l'enchainement de la mise en place des images. Les lignes que nous voulont sont les suivantes :

Code Ruby@character_sprites = []
    for i in $game_map.events.keys.sort
      sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
      @character_sprites.push(sprite)
    end
 @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))


Vous remarquez, qu'en boucle, chaque évènement de la map est mis dans un tableau :

Code [Event 1, Event 2, Event 3 ...]


Et après la boucle "for", c'est votre héros qui est mis dans le tableau des Sprites, et à la fin de ce dernier !

Code [Event 1, Event 2, Event 3 ..., Héros]


Ainsi, vous savez où se trouve le Sprite "Héros" dans ce bazard ! A la fin du tableau "@character_sprites". Pour savoir donc son emplacement, il suffit de prendre la taille du tableau, moins 1 :

Code Ruby# Permet de prendre le Sprite "héros" dans le tableau. Rappelez vous qu'on enlève 1 car le tableau commence à partir de 0 (Voir Cours Ruby sur les tableaux)
  @character_sprites.size-1


Créeons donc notre méthode pour afficher la fameuse Pop-Up.

III) Pop-Up, me voici !

Nous allons créer donc la Pop-Up sur le Sprite "Héros". Pour cela, restons dans cette classe et faisons une méthode :

Code Rubydef pop_up_damage
   @character_sprites[@character_sprites.size-1].damage(10, false)
 end


Quand on appellera la méthode "pop_up_damage", une Pop-Up s'affichera automatiquement sur le Sprite.

IV) Pop-Up, est tu là ?

Il faut vérifier si la Pop-Up est active. Cela évitera que, plus tard, on affiche plusieurs fois la Pop-Up car on ne sait pas si celle ci a été affiché ou non. Faisons donc notre méthode, toujours dans la même classe ("Spriteset_Map") :

Code Rubydef damage_effect?
    return @character_sprites[@character_sprites.size-1].effect?
  end


Cela renvoie "true" si la Pop-up est toujours sur le Sprite "Héros" sinon, ça renvoie "false".

V) Activer la Pop-Up

Bon, maintenant, il faut activer la Pop-Up quand le héros est en contact avec l'évènement. Comme on l'a vu dans le principe précédemment, nous allons faire une variable globale ... voire même utiliser une variable déjà existante : $game_temp

Allons dans le script "Game_Temp". Nous allons initialiser un attribut à "false" (donc au départ, aucun Pop-Up ne s'affiche) :

Code Rubyattr_accessor :pop_up_damage


On déclare l'attribut comme d'habitude et dans la méthode "initialize", on l'initialise :

Code Ruby@pop_up_damage = false


VI) Afficher la Pop-Up quand la variable est activé.

Tout ce passe dans le script "Scene_Map", puisque c'est ici que les Sprites sont affichés. Dans la méthode "update", nous pouvons donc mettre ceci :

Code Ruby#Si "$game_temp.pop_up_damage" vaut "true"
 if $game_temp.pop_up_damage
    # On affiche la "Pop-up"
    @spriteset.pop_up_damage
        # On désactive automatiquement "$game_temp.pop_up_damage" si la Pop-Up est active
    $game_temp.pop_up_damage = false if @spriteset.damage_effect?
 end


Avec la variable "$game_temp.pop_up_damage" qu'on a créé, on peu activer et désactiver à volonté notre Pop-Up. La Pop-Up est appelé grâce à la variable @spriteset, qui est un objet de la classe "Spriteset_Map" déjà initialisé.

VII) Déclencher la Pop-Up via un évènement.

Et bien, normalement, ce paragraphe ne devrait pas exister ^^, car si vous avez compris le tutorial, vous savez comment déclencher la Pop-Up. Oui, il suffit de mettre la variable "$game_temp.pop_up_damage" à "true".

Faites donc un évènement et dans "Insérer un Script", mettez :

Code Ruby$game_temp.pop_up_damage = true
Informations
Page vue 5884 fois | Auteur : Samarium

RPG Creative version 5 - Libérez votre créativité ! ; Mai 2005 - Mai 2012
0.038s - Optimisé pour une résolution 1024*728 - Tous droits réservés.

Contact - Partenaires - Historique - A propos