46 lines
1.6 KiB
GDScript
46 lines
1.6 KiB
GDScript
class_name Player extends CharacterBody2D
|
|
|
|
const DEADZONE: float = 0.1
|
|
|
|
@export var id: int = 1
|
|
@export var max_speed: float = 90
|
|
|
|
@onready var small_hit_scene: PackedScene = preload("res://scenes/hit/small_hit.tscn")
|
|
@onready var power_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
|