daily pastebin goal
33%
SHARE
TWEET

Smooth Movement

Holy87 Feb 27th, 2015 (edited) 381 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. =begin
  2.  ==============================================================================
  3.   ■ Movimenti fluidi di Holy87
  4.       versione 1.1
  5.       Difficoltà utente: ★
  6.       Licenza: CC. Chiunque può scaricare, modificare, distribuire e utilizzare
  7.       lo script nei propri progetti, sia amatoriali che commerciali. Vietata
  8.       l'attribuzione impropria.
  9.  ==============================================================================
  10.     Questo script aggiunge a finestre e sprite un movimento automatico e
  11.     fluido che
  12.  ==============================================================================
  13.   ■ Compatibilità
  14.     Window_Base -> alias update
  15.     Sprite -> alias update
  16.  ==============================================================================
  17.   ■ Installazione e istruzioni
  18.     Installare questo script sotto Materials e prima del Main. Per muovere
  19.     finestre e sprite usa i seguenti metodi:
  20.    
  21.     ● oggetto.smooth_move(x, y[, speed])
  22.       per muovere l'oggetto alle coordinate x, y.
  23.       speed ha un valore tra 1 e 5, e può essere omesso. Rappresenta la velocità
  24.       di movimento.
  25.      
  26.     ● oggetto.move_speed = x
  27.       imposta la velocità di movimento ad un valore compreso tra 1 e 5 della x
  28.      
  29.     ● oggetto.move_end?
  30.       restituisce true se ha completato il movimento, false altrimenti
  31.  ==============================================================================
  32. =end
  33. $imported = {} if $imported == nil
  34. $imported["H87_SmoothMovements"] = true
  35. #==============================================================================
  36. # ** Modulo Smooth_Movements
  37. #------------------------------------------------------------------------------
  38. #  Questo modulo, se integrato in finestre e sprite, aggiunge nuovi tipi di
  39. #  animazioni in movimento.
  40. #==============================================================================
  41. module Smooth_Movements
  42.   #--------------------------------------------------------------------------
  43.   # * Avvia il movimento fluido
  44.   #     new_x: nuova x
  45.   #     new_y: nuova y
  46.   #--------------------------------------------------------------------------
  47.   def smooth_move(new_x, new_y, speed = nil)
  48.     self.move_speed = speed unless speed.nil?
  49.     @new_x = new_x
  50.     @new_y = new_y
  51.     @start_move = true
  52.     @move_end = false
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # * Aggiorna il movimento fluido
  56.   #--------------------------------------------------------------------------
  57.   def update_smooth_movements
  58.     return unless @start_move
  59.     update_smooth_x
  60.     update_smooth_y
  61.     check_move_end
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # * Restituisce la velocità di movimento preconfigurata
  65.   #--------------------------------------------------------------------------
  66.   def move_speed
  67.     @speed = 2 if @speed.nil?
  68.     return @speed
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # * Imposta la velocità di movimento
  72.   #     new_speed: valore da 1 a 5
  73.   #--------------------------------------------------------------------------
  74.   def move_speed=(new_speed)
  75.     @speed = 20/([[new_speed,1].max,5].min*2)
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # * Aggiorna la posizione X del movimento
  79.   #     speed: velocità di movimento
  80.   #--------------------------------------------------------------------------
  81.   def update_smooth_x(speed = move_speed)
  82.     return if @new_x.nil?
  83.     dist = @new_x - self.x
  84.     if (dist.abs < speed)
  85.       self.x = update_smooth_x(speed/2)
  86.     else
  87.       self.x += dist / speed rescue self.x += dist
  88.     end
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # * Aggiorna la posizione Y del movimento
  92.   #     speed: velocità di movimento
  93.   #--------------------------------------------------------------------------
  94.   def update_smooth_y(speed = move_speed)
  95.     return if @new_y.nil?
  96.     dist = @new_y - self.y
  97.     if (dist.abs < speed)
  98.       self.y = update_smooth_y(speed/2)
  99.     else
  100.       self.y += dist / speed rescue self.y += dist
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # * Controlla se il movimento è terminato
  105.   #--------------------------------------------------------------------------
  106.   def check_move_end
  107.     if self.x == @new_x && self.y == @new_y
  108.       @move_end = true
  109.       @start_move = false
  110.     end
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # * Restituisce true se l'oggetto ha compiuto il suo movimento
  114.   #--------------------------------------------------------------------------
  115.   def move_end?
  116.     return @move_end || !@start_move
  117.   end
  118. end #modulo smooth
  119.  
  120. #==============================================================================
  121. # ** Classe Window_Base
  122. #------------------------------------------------------------------------------
  123. #  Inclusione del modulo smooth_movement
  124. #==============================================================================
  125. class Window_Base < Window
  126.   include Smooth_Movements  #incusione del modulo del movimento fluido
  127.   #--------------------------------------------------------------------------
  128.   # * Aggiornamento
  129.   #--------------------------------------------------------------------------
  130.   alias smooth_udpate update unless $@
  131.   def update
  132.     smooth_udpate
  133.     update_smooth_movements
  134.   end
  135. end #window_base
  136.  
  137. #==============================================================================
  138. # ** Classe Sprite
  139. #------------------------------------------------------------------------------
  140. #  Inclusione del modulo smooth_movement
  141. #==============================================================================
  142. class Sprite
  143.   include Smooth_Movements  #incusione del modulo del movimento fluido
  144.   #--------------------------------------------------------------------------
  145.   # * Aggiornamento
  146.   #--------------------------------------------------------------------------
  147.   alias smooth_udpate update unless $@
  148.   def update
  149.     smooth_udpate
  150.     update_smooth_movements
  151.   end
  152. end #sprite
  153.  
  154. #==============================================================================
  155. # ** Classe Viewport
  156. #------------------------------------------------------------------------------
  157. #  Inclusione del modulo smooth_movement
  158. #==============================================================================
  159. class Viewport
  160.   include Smooth_Movements  #incusione del modulo del movimento fluido
  161.   #--------------------------------------------------------------------------
  162.   # * Aggiornamento
  163.   #--------------------------------------------------------------------------
  164.   alias smooth_udpate update unless $@
  165.   def update
  166.     smooth_udpate
  167.     update_smooth_movements
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # * Restituisce la posizione X
  171.   #--------------------------------------------------------------------------
  172.   def x
  173.     return rect.x
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # * Restituisce la posizione Y
  177.   #--------------------------------------------------------------------------
  178.   def y
  179.     return rect.y
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # * Modifica la posizione X
  183.   #--------------------------------------------------------------------------
  184.   def x=(value)
  185.     rect.x = value
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # * Modifica la posizione Y
  189.   #--------------------------------------------------------------------------
  190.   def y=(value)
  191.     rect.y = value
  192.   end
  193. end #fine dello script
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top