Files
2026-video-game-project/Entities/Player/player.gd

76 lines
2.1 KiB
GDScript

class_name Player
extends CharacterBody2D
signal move
#nodes
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
@onready var hit_animation_player: AnimationPlayer = $HitAnimationPlayer
@onready var camera_center: Marker2D = $Markers/CameraCenter
@onready var center: Marker2D = $Markers/Center
#State Vars
const GRAVITY: int = 700
@export var speed: float = 1300
@export var maxSpeed: float = 300
@export var maxAirSpeed: float = 350
@export var friction: int = 3000
@export var airFriction: int = 1400
@export var jumpHight: float = -300
@export var maxJumpCount: int = 2
@export var dashSpeed: float = 600
@export var wallPushBack: float = 200
var canDash: bool = true
var deathEffect: PackedScene = preload("uid://dm4oirxl6bpnn")
var camreaCenterPosition: Vector2
var swordHitBoxXPos: float
var dashTime: float = 0.1
func _ready() -> void:
#connects the signal from scene manager to on spawn
#sets the things to make player movement better
set_floor_constant_speed_enabled(true)
floor_snap_length = 2
@warning_ignore("unused_parameter")
func _physics_process(delta: float) -> void:
#calls move and slide so the state scripts don't have to cause that causes bugs
move_and_slide()
#print(velocity.x)
#emits move purly for jump state cause that is dependent on exact move and slide in the code
move.emit()
get_dash()
#kills the player when they get too low
#if global_position.y > 200:
#player_death()
#sets the players pos to the spawn pos so the player statrs on the correct door to the level
func on_spawn(spawnPosition: Vector2):
global_position = spawnPosition
func player_death() -> void:
Util.add_effect_to_self(self, deathEffect)
queue_free()
func _on_hurt_box_area_entered(_area: Area2D) -> void:
player_death()
GameManager.reset_level()
func hurt(enemy: Node2D) -> void:
PlayerManager.decress_health(enemy.damage)
hit_animation_player.play("hit")
if PlayerManager.currenthealth == 0:
player_death()
func get_dash() -> void:
if is_on_floor():
await get_tree().create_timer(dashTime).timeout
if is_on_floor():
canDash = true
if is_on_wall():
canDash = true