Templier Lv.15
Age : 26 Inscrit le : 30/01/2011 Messages : 1273
| Sujet: [VX] Animer les parallax Mar 22 Mar 2011 - 18:44 | |
| Introduction :Je sais que certains d'entre-vous ont adopter le parallax-mapping. Le seul problème est que, quand on veut faire du parallax-mapping, on veut tout améliorer, et les animations avec. C'est pas très esthétique ces trois frame pour animer de l'eau ou autre décor en mouvement. Nécéssaire : - Un niveau moyen en graphisme : savoir bien découper les animations pour qu'elles se superposent bien. - Un bon niveau de parallax-mapping - Un log gerant les calques et la transparence. Les instructions :Faites votre parallax sur paint ou autre log gérant les calques, sans vous souciez des images à annimer. Ensuite, mettez toutes les frames de l'animation en calque, pour ne pas avoir à refaire toujours les décors. 1- Enregistrez chacune de vos frame avec le parallax avec comme nom : pour la première : Nomdevotreparallax_1 pour la seconde : Nomdevotreparallax_2 et de même pour chaque frame de l'animation. 2- Allez dans "propriétés de la carte" puis dans panorama, prennez le parallax nommé "Nomdevotreparallax_1". 3- C'est là que ça se complique (ça a été compliqué pour moi mais ça ne le sera pas pour tout le monde ><) A la ligne 43, vous avez cette portion de code : - Code:
-
when 1 then 20 D'après ce que j'ai compris, cette section du script signifie que sur la map 1, entre chaque animation du parallax, il y aura 20 frame (60 frame font 1 seconde). (Je vous ai fait la map 2 avec 40 frames) Faites de même pour chaque map de votre jeu. Choisissez le nombre de frames intelligemment Le script :Ce script est signé Modern Algèbra donc à mettre dans les crédits. - Spoiler:
- Code:
-
# Animated Parallax# Version 1.0# Author: modern algebra (rmrk.net)# Date: September 27, 2008 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Instructions:# # The script operates by having multiple parallax backgrounds and switching # between them at the interval set by $game_map.parallax_animation_frames # Thus, if you want to use an animated parallax, you need to do a few things: # (a) Make or find the parallax backgrounds you want to use and import # them into your game. Then, label them all the same with the one # distinction that at the end of each should have a _1, _2, etc... # Example Naming: # BlueSky_1, BlueSky_2, BlueSky_3, etc... # (b) Set the parallax background to any given map that you want the # animated parallaxes for. Be sure to set it to the first one you want # in succession, so BlueSky_1, not BlueSky_2 or _3. If you do set it to # BlueSky_2, then it will only animate between images _2 and _3. # (c) Scroll down to Line 36 and follow the instructions for setting # the animation speed #============================================================================== # ** Game_Map #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Summary of Changes: # new method - parallax_animation_frames #============================================================================== class Game_Map #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Parallax Animation Frames #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def parallax_animation_frames frames = case @map_id #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # EDITABLE REGION #`````````````````````````````````````````````````````````````````````` # Basically, this method determines how many frames there are between # switching parallaxes. So, if you set it to 20, then it will switch # to next parallax in the animation every 20 frames. # To do this, place this code below: # when map_ID then frame_num # So: # when 2 then 20 # means that on Map 2, the parallax will switch to the next one # every 20 frames. There are 60 frames in a second. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # For Map 2 when 2 then 20 # For Map 8 when 8 then 40 #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # END EDITABLE REGION #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ else # Default if Map not set and the parallax is animated 30 end return frames endend #============================================================================== # ** Spriteset_Map #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Summary of Changes: # overwritten methods - create_parallax, dispose_parallax, update_parallax #==============================================================================c lass Spriteset_Map #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Create Parallax #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def create_parallax # Initialize with one plane @parallax = [] @active_parallax = 0 @frame_count = 0 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Dispose of Parallax #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def dispose_parallax @parallax.each { |plane| plane.dispose } @parallax.clear end #-------------------------------------------------------------------------- # * Update Parallax #-------------------------------------------------------------------------- def update_parallax if @parallax_name != $game_map.parallax_name @parallax_name = $game_map.parallax_name if !@parallax.empty? # Delete previous bitmap @parallax.each { |plane| plane.bitmap.dispose } @parallax.each { |plane| plane.bitmap = nil } @parallax.clear end if @parallax_name != "" name = @parallax_name.dup loop do # Make a new plane plane = Plane.new (@viewport1) plane.z = -100 plane.visible = false begin # Set the bitmap to the name plane.bitmap = Cache.parallax (name) rescue plane.dispose break end @parallax.push (plane) if name.slice! (/_(\d+)$/) != nil frame = ($1.to_i + 1).to_s name += "_#{frame}" else break end end @active_parallax = 0 @parallax[0].visible = true unless @parallax[0].nil? end @parallax_animation_frames = $game_map.parallax_animation_frames Graphics.frame_reset end return if @parallax.empty? ox = $game_map.calc_parallax_x(@parallax[0].bitmap) oy = $game_map.calc_parallax_y(@parallax[0].bitmap) @parallax.each { |plane| plane.ox = ox } @parallax.each { |plane| plane.oy = oy } return if @parallax.size < 2 # Animate Parallax @frame_count += 1 if @frame_count % @parallax_animation_frames == 0 # Switch visible Parallax @parallax[@active_parallax].visible = false @active_parallax = (@active_parallax + 1) % @parallax.size @parallax[@active_parallax].visible = true end end end
Si des scripteurs ont des remarques à me faire, je suis prenneur.
|
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [VX] Animer les parallax Mar 22 Mar 2011 - 19:25 | |
| Un script interessant. Mais le problème est que si la totalité de la map en parallaxe est dupliquée la taille du projet en sera trop augmentée.
Autaut utiliser des évents ou des pictures pour arranger ça. |
|
Templier Lv.15
Age : 26 Inscrit le : 30/01/2011 Messages : 1273
| Sujet: Re: [VX] Animer les parallax Mar 22 Mar 2011 - 21:04 | |
| C'est vrai mais ça grille pas mal d'évent et ça peut faire laguer le jeu... |
|
Poulet trizo Lv.3
Inscrit le : 27/03/2011 Messages : 32
| Sujet: Re: [VX] Animer les parallax Dim 3 Avr 2011 - 16:07 | |
| Comment faire avec les parallax pour faire en sorte que le héros soit en dessous de quelques choses. (en dessous d'un toit, d'un haut d'arbre, ect...) Sinon merci pour le script, je compte m'en servir. |
|
Vache Folle
Age : 29 Inscrit le : 22/05/2010 Messages : 3005
| Sujet: Re: [VX] Animer les parallax Dim 3 Avr 2011 - 16:33 | |
| Tu ne peux pas. Il faut afficher une picture avec les éléments au dessus du heros. |
|
Age : 33 Inscrit le : 27/06/2008 Messages : 10881
| Sujet: Re: [VX] Animer les parallax Dim 3 Avr 2011 - 16:37 | |
| Ou tout bêtement un event, hein. |
|
| Sujet: Re: [VX] Animer les parallax | |
| |
|