30 lines
1.1 KiB
GDScript
30 lines
1.1 KiB
GDScript
extends Node2D
|
|
|
|
@export var projectile_prefab : Resource
|
|
@onready var projectilePrefab : PackedScene = load(projectile_prefab.resource_path)
|
|
|
|
func _process(_delta):
|
|
rotate_to_pointer()
|
|
|
|
if Input.is_action_just_pressed("attack") or Input.is_action_just_pressed("attack_controller"):
|
|
spawn_projectile(self.global_position, self.rotation, 350.0, 1)
|
|
pass
|
|
|
|
func get_aim_pos() -> Vector2:
|
|
var aim_dir_controller = Input.get_vector("aim_left_controller", "aim_right_controller", "aim_up_controller", "aim_down_controller").normalized()
|
|
return get_global_mouse_position() if aim_dir_controller.length() == 0 else self.global_position + aim_dir_controller
|
|
|
|
func rotate_to_pointer():
|
|
look_at(get_aim_pos())
|
|
|
|
func spawn_projectile(pos : Vector2, dir : float, speed: float, damage : int):
|
|
var projectile = projectilePrefab.instantiate()
|
|
var projectile_audio = projectile.get_node(projectile.audio_pool[randi_range(0, 2)])
|
|
projectile.global_position = pos
|
|
projectile.dir = dir
|
|
projectile.speed = speed
|
|
projectile.damage = damage
|
|
projectile.is_displayed_folded()
|
|
get_tree().root.add_child(projectile)
|
|
projectile_audio.play()
|
|
pass
|