-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEnemy.gd
More file actions
91 lines (64 loc) · 2.2 KB
/
Enemy.gd
File metadata and controls
91 lines (64 loc) · 2.2 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
class_name Enemy
extends Node2D
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var start_attack = false
var path_node
export(int) var health = 100
export(int) var point_value = 10
var direction = 1
var speed = 240
signal shoot
signal enemy_died
# Called when the node enters the scene tree for the first time.
func _ready():
add_to_group("enemies")
path_node = get_node("PathFollow2D")
if self.connect("shoot", Globals.get_stage_node(), "_do_shoot") != OK:
print("Couldn't find the stage and connect")
path_node.unit_offset = 1.0
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
path_node.offset += (speed * direction) * delta
if path_node.unit_offset > 1 && start_attack:
direction = -1
path_node.unit_offset = 1.0
elif path_node.unit_offset < 0 && start_attack:
direction = 1
path_node.unit_offset = 0
if health <= 0:
print("Emmiting enemy_died from Enemy.gd")
emit_signal("enemy_died", point_value)
queue_free()
pass
func _on_VisibilityNotifier2D_screen_entered():
start_attack = true
get_node("ShootTimer").start()
func hit():
health -= 100
func _on_ShootTimer_timeout():
var player1 = Globals.get_stage_node().find_node("Player1", false, false)
var player2 = Globals.get_stage_node().find_node("Player2", false, false)
var distanceToPlayer1 = INF
var distanceToPlayer2 = INF
var directionToPlayer1 : Vector2
var directionToPlayer2 : Vector2
if player1:
directionToPlayer1 = player1.global_position - find_node("Sprite").global_position
distanceToPlayer1 = directionToPlayer1.length()
if player2:
directionToPlayer2 = player2.global_position - find_node("Sprite").global_position
distanceToPlayer2 = directionToPlayer2.length()
var target
if distanceToPlayer1 > distanceToPlayer2:
target = player2
elif distanceToPlayer2 > distanceToPlayer1:
target = player1
elif distanceToPlayer1 == distanceToPlayer2:
target = player1
if target:
var direction = target.global_position - find_node("Sprite").global_position
emit_signal("shoot", get_node("PathFollow2D").get_global_transform_with_canvas().get_origin(), direction)
func _on_VisibilityNotifier2D_screen_exited():
queue_free()