godot-plateformer/_player/states/grap_hook.gd

37 lines
896 B
GDScript3
Raw Normal View History

2025-12-29 11:54:31 +08:00
extends LimboHSM
@onready var root: Normal = %Normal
2026-01-05 15:28:43 +08:00
@export var jump_grace_time: float = .13
var _jump_grace_timer: float
2025-12-29 11:54:31 +08:00
func _setup() -> void:
2026-01-05 15:28:43 +08:00
self.add_transition(
root.hook_shooting_state,
root.grapping_state,
root.hook_shooting_state.EVENT_FINISHED,
_can_enter_grapping_state
)
self.add_event_handler(&"trigger_jump",_handle_trigger_jump)
2025-12-31 13:07:31 +08:00
func _enter() -> void:
2026-01-05 15:28:43 +08:00
_jump_grace_timer = 0
2025-12-31 13:07:31 +08:00
get_root().blackboard.set_var(&"is_hooking",true) ##BB里锁住Dash状态
2025-12-29 11:54:31 +08:00
2026-01-05 15:28:43 +08:00
func _update(delta: float) -> void:
if _jump_grace_timer > 0:
_jump_grace_timer -= delta
2025-12-29 11:54:31 +08:00
func _exit() -> void:
2025-12-31 13:07:31 +08:00
get_root().blackboard.set_var(&"is_hooking",false) ##BB里锁住Dash状态
2025-12-29 11:54:31 +08:00
agent.locomotion_comp.enable_movement()
2026-01-05 15:28:43 +08:00
func _handle_trigger_jump() -> bool:
_jump_grace_timer = jump_grace_time
return false
func _can_enter_grapping_state() -> bool:
return agent.spawn_hook_comp.has_hook_anchor()