Class: Explosion
- Inherits:
-
Actor
- Object
- Actor
- Explosion
- Defined in:
- lib/explosion.rb
Direct Known Subclasses
Instance Method Summary collapse
- #collision_radius ⇒ Object
-
#initialize(opts = {}) ⇒ Explosion
constructor
A new instance of Explosion.
- #radius=(radius) ⇒ Object
- #to_s ⇒ Object
- #update ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Explosion
Returns a new instance of Explosion.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/explosion.rb', line 5 def initialize(opts={}) super set_image('explosion.png', opts) @initial_radius = opts[:initial_radius] || 10.0 @final_radius = opts[:final_radius] || 100.0 @duration = opts[:duration] || 3.0 @fade_after = opts[:fade_after] || 2.5 interpolate_alpha(:init => 255, :end => 0, :duration => @duration - @fade_after, :start_in => @fade_after) interpolate_saturation(:init => 0.0, :end => 1.0, :duration => 0.1, :loop => true) # Don't know why gosu changes my hue when only transforming # saturation so we keep it fixed, or give it a little space for # change interpolate_hue(:init => @color.hue-50, :end => @color.hue+50, :loop => true, :duration => 0.5) self.radius = @initial_radius # Expand or shrink the explosion interpolate_my( :radius, :init => @initial_radius, :end => @final_radius, :duration => @duration ) @z = ZOrder::Explosion @elapsed_time = 0.0 end |
Instance Method Details
#collision_radius ⇒ Object
37 38 39 |
# File 'lib/explosion.rb', line 37 def collision_radius @collision_radius end |
#radius=(radius) ⇒ Object
41 42 43 44 45 |
# File 'lib/explosion.rb', line 41 def radius=(radius) @collision_radius = radius @factor_x = 2*radius/@image.width @factor_y = 2*radius/@image.height end |
#to_s ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/explosion.rb', line 47 def to_s ["@elapsed_time #{format('%.2f', @elapsed_time)}", "@color.alpha #{@color.alpha}", "@color.hue #{format('%.2f', @color.hue)}", "@color.saturation #{format('%.2f', @color.saturation)}", "@color.value #{format('%.2f', @color.value)}"] end |
#update ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/explosion.rb', line 28 def update # Note to self: It's important to call super! super if @elapsed_time > @duration die end @elapsed_time += dt end |