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() standard_movement(delta) 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)