extends Area signal enemy_damaged signal enemy_died export (PackedScene) var enemybullet var base_pos = Vector3() var angle = 0 export var move_w = 22 export var move_h = 12 var bullets var hp = 990 var damage = 0 var attack_point = 10 func _ready(): base_pos = translation angle = 0 bullets = get_tree().root.get_node("Main/EnemyBullets") #func _process(delta): # pass func _physics_process(delta): move(delta) func move(delta): angle += delta translation.x = base_pos.x + move_w * cos(deg2rad(angle * 90)) translation.z = base_pos.z + move_h * sin(deg2rad(angle * 70)) func _on_ShotTimer_timeout(): var angle_add = 12 var angle = 90 - angle_add * 3 var spd = 0.2 for i in range(7): _shot(translation, angle, spd) _shot(translation, angle, spd * 0.8) angle += angle_add func _shot(pos, angle, spd): var bullet = enemybullet.instance() bullet.translation = pos bullet.set_dir_and_speed(angle, spd) bullets.add_child(bullet) func _on_EnemyZako_area_entered(area): if is_queued_for_deletion(): return # print("playerbullet hit the enemy") if area.is_in_group("playerbullets"): hp -= area.attack_point if hp <= 0: hp = 0 emit_signal("enemy_died") emit_signal("enemy_damaged") func _on_EnemyZako_body_entered(body): if is_queued_for_deletion(): return # print("player hit the enemy") if body.is_in_group("player"): body.damage = attack_point