class_name Player extends CharacterBody2D const DEADZONE: float = 0.1 @export var id: int = 1 @export var max_speed: float = 90 @onready var hit_scene: PackedScene = preload("res://scenes/hit/power_hit.tscn") @onready var sprite: AnimatedSprite2D = $AnimatedSprite2D @onready var anim_player: AnimationPlayer = $AnimationPlayer @onready var state_machine: StateMachine = $StateMachine @onready var hit_timer: Timer = $HitTimer @onready var power_timer: Timer = $PowerTimer var anim_dir: String var def_dir: String var power_bar: float func _ready() -> void: assert(id == 1 or id == 2, "id ("+str(id)+") is invalid") anim_dir = 'up' if id == 1 else 'down' def_dir = 'idle_up' if id == 1 else 'idle_down' power_bar = 0 hit_timer.connect("timeout", $StateMachine/Hitting._on_hit_end) power_timer.connect("timeout", func() -> void: print(power_bar) ) func get_movement_vector() -> Vector2: var x_mov: float = Input.get_action_strength('p'+str(id)+'_move_right') - Input.get_action_strength('p'+str(id)+'_move_left') var y_mov: float = Input.get_action_strength('p'+str(id)+'_move_down') - Input.get_action_strength('p'+str(id)+'_move_up') return Vector2(x_mov, y_mov) func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("p"+str(id)+"_power_hit") and power_bar == 100: power_bar = 0 state_machine.state.finished.emit(PlayerState.HITTING, {"hit": "power"}) func _process(_delta: float) -> void: if Input.is_action_pressed("p"+str(id)+"_hit_left") and Input.is_action_pressed("p"+str(id)+"_hit_right"): if power_bar < 100: power_bar += 1