Files
2026-video-game-project/Entities/Player/player_state_scripts/ground_movement/grab_state.gd

47 lines
1.0 KiB
GDScript

extends NodeState
@export_category("nodes")
@export var player: Player
@export var animatedSprite2D: AnimatedSprite2D
@export var ledgeGrabBox: CollisionShape2D
@export var wallCheck: ShapeCast2D
@export var floorCheck: RayCast2D
const GRAVITY = player.GRAVITY
@warning_ignore("unused_parameter")
func on_process(delta: float) -> void:
pass
@warning_ignore("unused_parameter")
func on_phyisics_process(delta: float) -> void:
var collision = wallCheck.get_collision_normal(0)
if collision.x == -1:
animatedSprite2D.flip_h = false
if collision.x == 1:
animatedSprite2D.flip_h = true
transition_states()
func enter() -> void:
player.velocity.x = 0
ledgeGrabBox.disabled = false
animatedSprite2D.play("Ledge Grab")
func exit() -> void:
ledgeGrabBox.disabled = true
animatedSprite2D.stop()
func transition_states() -> void:
if GameInputEvents.jump_input():
transition.emit("jump")
if floorCheck.is_colliding():
transition.emit("idle")
if GameInputEvents.crouch_input():
ledgeGrabBox.disabled = true
transition.emit("fall")