class_name Player extends CharacterBody2D @export_group("Movement", "move_") @export var move_normal_speed: float @export var move_focused_speed: float @onready var startpos = position var can_die = true var can_graze = true var can_shoot = true var can_move = true var focused: bool: get(): return Input.is_action_pressed(&"focus") func _physics_process(delta: float) -> void: print(can_die) var input_dir = Input.get_vector(&"move_left", &"move_right", &"move_up", &"move_down").sign() if can_move: velocity = input_dir.normalized() * (move_focused_speed if focused else move_normal_speed) move_and_slide() func _on_hurtbox_area_entered(area: Area2D) -> void: if can_die: %DeathSound.play() %AnimationPlayer.play("respawn") position = startpos CurrentGame.change_lives(-1) set_invincible(true) set_disabled(true) func set_disabled(truefalse: bool): velocity = Vector2.ZERO %HurtboxShape.disabled = truefalse %CollectionShape.disabled = truefalse %GrazeShape.disabled = truefalse can_shoot = !truefalse can_move = !truefalse if truefalse == true: %PlayerBulletEmitter.timer.stop() else: if Input.is_action_pressed("shoot"): %PlayerBulletEmitter.timer.start() %PlayerBulletEmitter._on_timer_timeout() func set_immobile(truefalse: bool): can_move = truefalse func set_invincible(truefalse: bool): can_die = !truefalse func _on_graze_box_area_entered(area: Area2D) -> void: if !area.grazed && can_graze: area.grazed = true %GrazeSound.play() %GrazeParticles.emitting = true CurrentGame.change_graze(1)