Sansonic Auguste Polichinelle
Nombre de messages : 1116 Age : 31 Projet(s) en cours : ... Niveau Rpg Maker : jugez !... Date d'inscription : 28/07/2007
| Sujet: [RGSS2][VX] Système d'animation du Parallaxe Dim 01 Mai 2011, 01:40 | |
| Ce script est disponible grâce a modern algebra donc n'oubliez pas de l'insérer dans vos crédits.
Fonction: Ce script permet de créer une animation du parallaxe d'une map en permutant plusieurs parallaxes entre eux, à la façon d'une autotiles en fait.
Comment l'utiliser: J'ai traduit les instructions dans la mesure du possible en apportant quelques précisions personnelles qui je pense sont tout de même utiles, pas besoin de me créditer, j'vous ôte cette petite épine du pied vue que c'est à la porté de tout utilisateur de google
Ce qui faut: Plusieurs parallaxes, soit qui comme les autotiles sont en fait plusieurs poses d'une seul et meme scène, ou alors selon votre imagination, si vous souhaitez par exemple changer faire passer d'une fond étoilé à un fond ensoleillé, etc... Bon votre imagination est votre seule limite car le nombre de parallaxes est infini (en théorie). Script: - Code:
-
#============================================================================== # Animated Parallax # Version 1.0 # Author|Auteur: modern algebra (rmrk.net) # Date: September 27, 2008 # Traduction: Sansonic (rpgfusionv2) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Instructions: # # Le script fonctionne en utilisant plusieurs "Parallaxes" et en les faisant permuter entre eux, selon un ordre choisi # à une vitesse/interval déterminer par $game_map.parallax_animation_frames # Ainsi,si vous souhaitez créer une animation vous devez faire certaines choses: # (a) Faire ou trouver les "Parallaxes" de votre choix et les importer # dans le dossier correspondant. Puis, nommez les avec le meme nom # en ordonnant chacun avec "_1", "_2", etc... # Exemple: # BlueSky_1, BlueSky_2, BlueSky_3, etc... # (b) Attribuer le premier parallaxe (donc avec le "_1") à la Map de votre choix. # C'est important que ce soit le premier parallaxe et non un autre # car si vous attribuer par exemple le parallaxe # BlueSky_2 (pour reprendre l'exemple plus d'en haut), l'animation exclura le premier parallaxe et donc # elle ne se fera qu'entre le parallaxe attribuer, ici "BlueSky_2", et le dernier parallaxe, sans jamais inclure le 1er. # (c) Descendez à la Ligne 38 et suivez les instructions # pour la vitesse de l'animation. #============================================================================== # ** 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 #`````````````````````````````````````````````````````````````````````` # En fait, cette partie détermine le nombre de Frames s'écoulant entre chaque # changement d'images de l'animation du parallaxe d'une Map. Donc, si vous mettez 20, # le script passera à l'image suivante de l'animation toutes les 20 frames. # # # Pour ce faire, insérez ce code après les "++" plus bas: # when "N°_de_la_Map" then "Nbr_de_Frames" # # Exemple: # when 2 then 20 # # signifie que sur la Map 2, l'animation enchainera les parallaxe toutes les 20 frame # Il y a environ 60 frames dans 1 seconde. # #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Pour Map 2 when 2 then 20 # Pour Map 8 when 8 then 40 #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # END EDITABLE REGION #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ else # Default if Map not set and the parallax is animated 30 end return frames end end
#============================================================================== # ** Spriteset_Map #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Summary of Changes: # overwritten methods - create_parallax, dispose_parallax, update_parallax #==============================================================================
class 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 Exemple d'images: (Sauf que celle-ci est à découper en quatre et à nommer selon la méthode indiquée dans le script) | |
|