gae_wild_jam/scripts/witch.gd

55 lines
1.4 KiB
GDScript

extends CharacterBody2D
var camera
var is_casting = false
var fireball = preload("res://scenes/fireball.tscn")
var shuriken = preload("res://scenes/shuriken.tscn")
var fire_swirl = preload("res://scenes/fire_swirl.tscn")
var shuriken_count = 1
func _ready() -> void:
$CauldronBar.witch = self
camera = get_node("/root/Game/Camera2D")
func _physics_process(delta: float) -> void:
# Add the gravity.
pass
func _on_collect(DropsBase):
if is_casting:
return
$CauldronBar.progres_bar(DropsBase)
func shoot_fireballs():
var enemies = get_tree().get_nodes_in_group("enemies")
for enemy in enemies:
var fb = fireball.instantiate()
fb.global_position = global_position
get_parent().add_child(fb)
fb.launch(enemy.global_position)
camera.shake(0.3,0.8)
func shoot_fire_swirl():
var fs = fire_swirl.instantiate()
fs.global_position = global_position
get_parent().add_child(fs)
camera.shake(0.3, 0.8)
func shoot_shuriken():
for i in range(shuriken_count):
var sh = shuriken.instantiate()
sh.global_position = global_position
get_parent().add_child(sh)
await get_tree().create_timer(0.2).timeout
func get_nearest_enemy(from: Vector2) -> Node:
var nearest = null
var min_distance = INF
for enemy in get_tree().get_nodes_in_group("enemies"):
var dist = from.distance_to(enemy.global_position)
if dist < min_distance:
min_distance = dist
nearest = enemy
return nearest