-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathplayer.rb
More file actions
71 lines (62 loc) · 1.98 KB
/
Copy pathplayer.rb
File metadata and controls
71 lines (62 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class Player
attr_reader :x
attr_reader :y
def initialize(colliders_name)
@idle_anim = Gosu::Image.new("images/king_dummy_v4.png", :tileable => true)
@right_walk_anim = Gosu::Image.load_tiles("images/king_walk_right.png", 32, 32)
@left_walk_anim = Gosu::Image.load_tiles("images/king_walk_left.png", 32, 32)
@right_flag = true
@image = @idle_anim
@width = 32
@height = 32
@speed = 1
@centre_and_top_gap = 6
@centre_and_bottom_gap = 16
@centre_and_left_gap = 6
@centre_and_right_gap = 6
@buffer = 4
@colliders_name = colliders_name
@player_colliders = Colliders.new("#{@colliders_name}", @buffer, @centre_and_top_gap, @centre_and_bottom_gap, @centre_and_left_gap, @centre_and_right_gap)
@line_ranges = @player_colliders.calculate_lines
end
def warp(x,y)
@x = x + @width/2
@y = y + @height/2
end
def idle
@image = @idle_anim
end
def right
@right_flag = true
@player_colliders.right_collision_check(@x, @y, @speed)
@x += @speed unless @player_colliders.right_collision
@image = @right_walk_anim[Gosu.milliseconds / 200 % @right_walk_anim.size]
end
def left
@right_flag = false
@player_colliders.left_collision_check(@x, @y, @speed)
@x-= @speed unless @player_colliders.left_collision
@image = @left_walk_anim[Gosu.milliseconds / 200 % @left_walk_anim.size]
end
def up
@player_colliders.top_collision_check(@x, @y, @speed)
@y -= @speed unless @player_colliders.top_collision
if @right_flag
@image = @right_walk_anim[Gosu.milliseconds / 200 % @right_walk_anim.size]
else
@image = @left_walk_anim[Gosu.milliseconds / 200 % @left_walk_anim.size]
end
end
def down
@player_colliders.bottom_collision_check(@x, @y, @speed)
@y += @speed unless @player_colliders.bottom_collision
if @right_flag
@image = @right_walk_anim[Gosu.milliseconds / 200 % @right_walk_anim.size]
else
@image = @left_walk_anim[Gosu.milliseconds / 200 % @left_walk_anim.size]
end
end
def draw
@image.draw(@x - @width/2, @y - @height/2, 10)
end
end