forked from Julian/JuegoClase
97 lines
2.1 KiB
GDScript
97 lines
2.1 KiB
GDScript
extends CharacterBody2D
|
|
class_name Player
|
|
|
|
var speed := 140
|
|
var direccion := 0.0
|
|
var jump := 250
|
|
const gravity := 12
|
|
|
|
var damage = 1
|
|
var canDash = true
|
|
|
|
@onready var anim := $AnimationPlayer
|
|
@onready var sprite := $Sprite2D
|
|
@onready var frutaslabel := $PlayerGUI/HBoxContainer/FrutasLabel
|
|
@onready var raycastDmg := $RaycastDmg
|
|
@onready var dmgColision := $RecibirDanio/CollisionShape2D
|
|
@onready var hpbar := $PlayerGUI/VBoxContainer/HPProgressBar
|
|
#
|
|
#enum estados {NORMAL,HERIDO}
|
|
#var estadoActual = estados.NORMAL
|
|
@onready var state_machine= $StateMachine
|
|
|
|
var vida := 3 :
|
|
set(val):
|
|
vida = val
|
|
hpbar.value = vida
|
|
var numSaltos = 2
|
|
|
|
func _ready():
|
|
hpbar.max_value = vida
|
|
hpbar.value = vida
|
|
Global.connect("fruitCollected",actualizaInterfazFrutas)
|
|
|
|
func _process(delta):
|
|
$LabelState.text = $StateMachine.state.name
|
|
#print($StateMachine.state.name)
|
|
if is_on_floor() and numSaltos != 2 and state_machine.state.name != "enAire":
|
|
reiniciaSalto()
|
|
#Leer los raycast
|
|
for ray in raycastDmg.get_children():
|
|
if ray.is_colliding():
|
|
var colision = ray.get_collider()
|
|
if colision.is_in_group("Enemigos") and colision.has_method("takeDmg"):
|
|
colision.takeDmg(damage)
|
|
state_machine.transition_to("enAire",{Salto = true})
|
|
numSaltos+=1
|
|
if is_on_floor():
|
|
canDash = true
|
|
|
|
func reiniciaSalto():
|
|
numSaltos = 2
|
|
|
|
func actualizaInterfazFrutas():
|
|
frutaslabel.text = ("x"+str(Global.frutas))
|
|
#
|
|
func takeDamage(dmg):
|
|
|
|
vida-=dmg
|
|
state_machine.transition_to("takeDamage")
|
|
|
|
if vida <= 0:
|
|
morir()
|
|
func morir():
|
|
get_tree().reload_current_scene()
|
|
|
|
|
|
#
|
|
#func _physics_process(delta):
|
|
# if estadoActual == estados.NORMAL:
|
|
# procesarNormal(delta)
|
|
#
|
|
#
|
|
#func procesarNormal(delta):
|
|
# direccion = Input.get_axis("ui_left","ui_right")
|
|
# velocity.x = direccion * speed
|
|
#
|
|
# if direccion != 0:
|
|
# anim.play("walk")
|
|
# else:
|
|
# anim.play("idle")
|
|
#
|
|
# sprite.flip_h = direccion < 0 if direccion != 0 else sprite.flip_h
|
|
#
|
|
# if is_on_floor() and Input.is_action_just_pressed("ui_accept"):
|
|
# $AudioSalto.play()
|
|
# velocity.y -= jump
|
|
#
|
|
# if !is_on_floor():
|
|
# velocity.y += gravity
|
|
#
|
|
#
|
|
# move_and_slide()
|
|
#
|
|
|
|
|
|
#
|