Game Development Reference
In-Depth Information
@gun_angle
= -
atan
* 180 /
Math
::
PI
22
@body_angle
=
change_angle(
@body_angle
,
23
Gosu
::
KbW
,
Gosu
::
KbS
,
Gosu
::
KbA
,
Gosu
::
KbD
)
24
25
end
26
27
def
draw
28
@shadow
.
draw_rot(
@x
- 1
,
@y
- 1
,
0
,
@body_angle
)
29
@body
.
draw_rot(
@x
,
@y
,
1
,
@body_angle
)
30
@gun
.
draw_rot(
@x
,
@y
,
2
,
@gun_angle
)
31
end
32
33
private
34
35
def
change_angle
(previous_angle, up, down, right, left)
36
if
@window
.
button_down?(up)
37
angle
= 0.0
38
angle
+= 45.0
if
@window
.
button_down?(left)
39
angle
-= 45.0
if
@window
.
button_down?(right)
40
elsif
@window
.
button_down?(down)
41
angle
= 180.0
42
angle
-= 45.0
if
@window
.
button_down?(left)
43
angle
+= 45.0
if
@window
.
button_down?(right)
44
elsif
@window
.
button_down?(left)
45
angle
= 90.0
46
angle
+= 45.0
if
@window
.
button_down?(up)
47
angle
-= 45.0
if
@window
.
button_down?(down)
48
elsif
@window
.
button_down?(right)
49
angle
= 270.0
50
angle
-= 45.0
if
@window
.
button_down?(up)
51
angle
+= 45.0
if
@window
.
button_down?(down)
52
end
53
angle
||
previous_angle
54
end
55
end
56
57
class
GameWindow
<
Gosu
::
Window
58
MAP_FILE
=
File
.
join(
File
.
dirname(
__FILE__
),
'island.json'
)
59
UNIT_FILE
=
File
.
join(
File
.
dirname(
File
.
dirname(
60
__FILE__
)),
'media'
,
'ground_units.json'
)
61
SPEED
= 5
62
63
64
def
initialize
65
super
(
640
,
480
,
false
)
66
@map
=
Gosu
::
Tiled
.
load_json(
self
,
MAP_FILE
)
@units
=
Gosu
::
TexturePacker
.
load_json(
67