JuegoClase/Player/enAire.gd
2024-10-26 07:47:55 +02:00

71 lines
1.7 KiB
GDScript

extends PlayerState
var hasJumped = false
var isFalling = false
func state_enter_state(msg := {}):
hasJumped = false
player.velocity = Vector2.ZERO
if msg.has("Salto"):
hasJumped = true
player.numSaltos -= 1
$"../../AudioSalto".play()
anim_player.play("jump")
player.velocity.y = -player.jump
#print(player.numSaltos)
print(player.numSaltos)
if player.numSaltos == 0:
anim_player.play("jumpDoble")
else:
anim_player.play("jumpCaer")
if isFalling :
$CoyoteTimer.start()
func state_physics_process(delta):
var direccion = Input.get_axis("ui_left","ui_right")
#
player.sprite.flip_h = direccion < 0 if direccion != 0 else player.sprite.flip_h
player.velocity.x = direccion * player.speed
if player.velocity.y > 0:
isFalling = true
else:
isFalling = false
player.velocity.y += player.gravity
player.move_and_slide()
if player.is_on_wall():
state_machine.transition_to("wallSlide")
if player.is_on_floor():
state_machine.transition_to("Idle")
if !$BufferJumpTimer.is_stopped() and player.is_on_floor():
$BufferJumpTimer.stop()
#print("SaltoJumpBuffer")
player.reiniciaSalto()
state_machine.transition_to("enAire",{Salto = true})
#Entrada doble salto
elif hasJumped and Input.is_action_just_pressed("ui_accept") and player.numSaltos > 0:
state_machine.transition_to("enAire",{Salto = true})
elif !$CoyoteTimer.is_stopped() and Input.is_action_just_pressed("ui_accept"):
state_machine.transition_to("enAire",{Salto = true})
elif Input.is_action_just_pressed("ui_accept"):
$BufferJumpTimer.start()
elif Input.is_action_just_pressed("dash") and player.canDash:
state_machine.transition_to("Dash")
func state_exit():
pass