31 lines
997 B
GDScript3
31 lines
997 B
GDScript3
|
|
extends LimboState
|
||
|
|
|
||
|
|
func _setup() -> void:
|
||
|
|
self.add_event_handler(&"completed_climb",_handler_completed_climb)
|
||
|
|
|
||
|
|
func _enter() -> void:
|
||
|
|
agent.locomotion_comp.suspend_movement()
|
||
|
|
agent.locomotion_comp.stop_dash(true)
|
||
|
|
agent.locomotion_comp.start_climb(true)
|
||
|
|
|
||
|
|
get_root().blackboard.set_var(&"lock_direction_changed",true)
|
||
|
|
|
||
|
|
func _exit() -> void:
|
||
|
|
agent.locomotion_comp.enable_movement()
|
||
|
|
agent.locomotion_comp.suspend_climb()
|
||
|
|
|
||
|
|
get_root().blackboard.set_var(&"lock_direction_changed",false)
|
||
|
|
|
||
|
|
func _update(delta: float) -> void:
|
||
|
|
var climb_dir = Input.get_axis("move_up","move_down") as float
|
||
|
|
agent.locomotion_comp.add_climb_input(climb_dir)
|
||
|
|
|
||
|
|
var _enter_climb_hop = not agent.wall_detector.up_ray_on_wall and not agent.wall_detector.mid_ray_on_wall and agent.wall_detector.down_ray_on_wall and climb_dir< 0
|
||
|
|
if _enter_climb_hop:
|
||
|
|
agent.locomotion_comp.climb_hop()
|
||
|
|
self.dispatch(self.EVENT_FINISHED)
|
||
|
|
|
||
|
|
func _handler_completed_climb() -> bool:
|
||
|
|
self.dispatch(self.EVENT_FINISHED)
|
||
|
|
return true
|