Game Development Reference
In-Depth Information
@x + 2 , @y - 2 , COLOR ,
19
@x - 2 , @y + 2 , COLOR ,
20
@x + 2 , @y + 2 , COLOR ,
21
1 )
22
23 else
24 @explosion ||= Explosion . new( @x , @y )
25 @explosion . draw
26 end
27 end
28
29 def update
30 fly_distance = ( Gosu . milliseconds - @fired_at ) * 0.001 * @speed
31 @x , @y = point_at_distance(fly_distance)
32 @explosion && @explosion . update
33 end
34
35 def arrived?
36 @x == @target_x && @y == @target_y
37 end
38
39 def done?
40
exploaded?
41 end
42
43 def exploaded?
44 @explosion && @explosion . done?
45 end
46
47 def fire (speed)
48 @speed = speed
49 @fired_at = Gosu . milliseconds
50 self
51 end
52
53
private
54
55 def sound
56
@@sound ||= Gosu :: Sample . new(
$window , Game . media_path( 'fire.mp3' ))
57
58 end
59
60 def trajectory_length
61 d_x = @target_x - @x
62 d_y = @target_y - @y
63 Math . sqrt(d_x * d_x + d_y * d_y)
64 end
Search WWH ::




Custom Search