Files
DailyDungeon/Scripts/ranged_attack.gd
2025-06-27 14:02:22 -05:00

40 lines
1.0 KiB
GDScript

extends PlayerState
class_name PlayerRangedAttack
@export var fired_object : PackedScene
@export var object_speed : float = 20.0
@export var arrow_damage : float = 1
var charged_power = 0.0
const CHARGE_RATE = 25.0
func Enter():
character.velocity = Vector3.ZERO
func Physics_Update(delta):
body_look_at_mouse()
apply_gravity(delta)
if Input.is_action_just_released("ranged_attack"):
fire_projectile()
Transitioned.emit(self,"on floor")
charge_shot(delta)
func charge_shot(delta):
charged_power = clamp(charged_power + delta * CHARGE_RATE,0,100)
func fire_projectile():
var arrow_spawn = fired_object.instantiate()
get_tree().current_scene.add_child(arrow_spawn)
character.arrows -= 1
arrow_spawn.start_speed = object_speed
arrow_spawn.current_speed = object_speed
arrow_spawn.power = charged_power
arrow_spawn.transform.basis = character.body.global_transform.basis
arrow_spawn.global_position = character.body.global_position
print("ARROW POS :", arrow_spawn.global_position)
func Exit():
print("CHARGE POWER: ",charged_power)