animation au dessus de tout.

Démarré par Djipi, 06 Août 2007 à 18:18

0 Membres et 1 Invité sur ce sujet

Bonsoir à tous.

Voilamon soucis , j'utilise rpg maker (ça je pense que tout le monde le sait) mais j'ai un soucis , quandje me trouve par exemple derriere un arbre et que je fait un coup d'épée ou autre (une animation) l'animation ne respect plus du tout la superposition et se joue dessus tout.

Ma question est : est ce possible de pouvoir jouer une animation tout en respectant la superposition?

06 Août 2007 à 18:22 #1 Dernière édition: 06 Août 2007 à 18:39 par JohnT
Ce n'est pas possible. La meilleure solution c'est de faire l'animation en évènement. (eh oui, encore des évènements :ninja:)

Ou alors si tu veux garder tes animations de combat, et que tu as un arbre par exemple, tu devras grapher une nouvelle animation avec l'arbre. Mais bon, c'est pas la meilleure solution, surtout si tu te déplaces pendant le coup.

Essaie de passer de l'animation de combat à l'animation par évènement, c'est plus rentable pour la superposition. :)

(Tiens au fait, tu restes sous RMXP?^^)

06 Août 2007 à 19:56 #2 Dernière édition: 06 Août 2007 à 20:00 par antoyo
Erreur, c'est tout à fait possible avec rpg maker xp.
Voici un script qui permet de faire les animations en dessous des arbres et autres:
Ça marche pas juste derrière les objets comme un arbre, ça marche aussi derrière un event qui est un perso ou autre!
module RPG
  class Sprite < ::Sprite
    def animation_set_sprites(sprites, cell_data, position)
      for i in 0..15
        sprite = sprites[i]
        pattern = cell_data[i, 0]
        if sprite == nil or pattern == nil or pattern == -1
          sprite.visible = false if sprite != nil
          next
        end
        sprite.visible = true
        sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
        if position == 3
          if self.viewport != nil
            sprite.x = self.viewport.rect.width / 2
            sprite.y = self.viewport.rect.height - 160
          else
            sprite.x = 320
            sprite.y = 240
          end
        else
          sprite.x = self.x - self.ox + self.src_rect.width / 2
          sprite.y = self.y - self.oy + self.src_rect.height / 2
          sprite.y -= self.src_rect.height / 4 if position == 0
          sprite.y += self.src_rect.height / 4 if position == 2
        end
        sprite.x += cell_data[i, 1]
        sprite.y += cell_data[i, 2]
        $game_temp.below_hero = true
        $game_temp.below_hero ? sprite.z = 300 : sprite.z = 3000
       
        sprite.ox = 96
        sprite.oy = 96
        sprite.zoom_x = cell_data[i, 3] / 100.0
        sprite.zoom_y = cell_data[i, 3] / 100.0
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
        sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
        sprite.blend_type = cell_data[i, 7]
      end
    end
  end
end

Et dans Game_Temp, après
attr_accessor :debug_index
ajoute:
attr_accessor :below_hero
et après:
@debug_index = 0
ajoute:
@below_hero = false

Il y a quelques défauts, par exemple, si ton animation est grande...
un screenshot va t'en dire plus:


J'espère que ça t'aidera.
Si tu as des problèmes avec ce script, n'hésite pas à me poser des questions.
Ce script n'est pas fait par moi.

Citation de: antoyo le 06 Août 2007 à 19:56
Ce script n'est pas fait par moi.

Donc prudence, c'est en abusant de choses dont on n'a pas la portée qu'on finit par commettre une erreur fatale. ;)

Oui, il vaut sans doute mieu faire une copie de ton jeu, avant de tenter des scripts...  ;)

Merci beaucoup pour vos réponses.

JohnT , je ne sais pas encors si je reste sous RPG Maker XP , je suis en train d'apprendre le fonctionnement de Gamemaker qui a , soyons franc , des possibilités sympathiques.

Antoyo , merci pour le script , je vais tester cela (en faisant bien sur une copie de sauvegardes.) .

Asturias , je sais qu'il vaux mieux une copie ne t'en fait pas  ;)

En effet ce serais très sage d'envisager game maker... c'est un logiciel assez simple a maîtriser ( enfin pour certains :ninja: )

Mais sinon moi j'avais tout simplement eu l'idée d'aller dans la base de donnée et mettre la superposition de ton arbre comme ça:

5      5      5      5

5      5      5      5

4      4      4      4

3      3      3      3

Moi je fait comme ça personnelement  :ninja: .

J'ai dis que ce script n'est pas de moi, mais je l'ai testé. Enfin, il vaut toujours mieux faire une sauvegarde. Enfait, moi je crée un nouveau projet rpg maker xp juste pour testé les scripts.