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?
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?^^)
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:
(http://www.imagup.info/images/03/1186424517_animendessous.PNG)
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.