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