-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathenemy.gd
62 lines (52 loc) · 1.41 KB
/
enemy.gd
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
extends KinematicBody2D
var walk_right = true
export var speed = 1.00
onready var player = get_node("/root/world/player")
onready var sprites = get_node("sprites")
func _ready():
add_to_group("enemies")
if has_node("check_down"):
get_node("check_down").add_exception(self)
else:
add_to_group("flying")
walk_right = bool(randi()% 2)
set_fixed_process(true)
func _fixed_process(delta):
#toggle direction
if has_node("check_down"):
if not get_node("check_down").is_colliding():
sprites.set_flip_h(walk_right)
walk_right = !walk_right
#walk anim
if not is_in_group("flying"):
if (int(get_pos().x)*3)/2 % 50 < 25:
sprites.set_frame(0)
else:
sprites.set_frame(1)
#do movement
if walk_right:
move(Vector2(speed,0))
else:
move(Vector2(-speed,0))
if get_pos().x <= 8 and !walk_right:
sprites.set_flip_h(walk_right)
walk_right = true
elif get_pos().x >= global.margin_right and walk_right:
sprites.set_flip_h(walk_right)
walk_right = false
elif is_colliding():
sprites.set_flip_h(walk_right)
walk_right = !walk_right
func _on_Area2D_body_enter(body):
if body.get_name() == "player":
if not body.dead and not body.shape.is_trigger():
var add = 18
if is_in_group("flying"):
add = 16
if body.get_pos().y+add > get_pos().y:
get_node("/root/world").remove_life()
kill_monster()
func kill_monster():
global.enemies_killed += 1
global.play_sound("killmonster")
queue_free()