76 lines
2.1 KiB
GDScript
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
|