35 lines
1018 B
GDScript3
35 lines
1018 B
GDScript3
|
|
extends LimboHSM
|
|||
|
|
|
|||
|
|
@onready var root: Normal = %Normal
|
|||
|
|
|
|||
|
|
func _setup() -> void:
|
|||
|
|
self.add_event_handler(&"trigger_jump",_handler_trigger_jump)
|
|||
|
|
self.add_event_handler(root.climb_state.EVENT_FINISHED,_handler_climb_state_finished)
|
|||
|
|
self.add_event_handler(root.climb_jump_state.EVENT_FINISHED,_handler_climb_state_finished)
|
|||
|
|
|
|||
|
|
self.add_transition(root.climb_state,root.climb_jump_state,&"want_to_climb_jump")
|
|||
|
|
|
|||
|
|
func _enter() -> void:
|
|||
|
|
if agent.is_on_wall():##如果已经在Wall上,则什么都不做
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
var compensaton_velocity = Player.get_direction_vector(agent.direction) * 1000
|
|||
|
|
agent.velocity = compensaton_velocity
|
|||
|
|
agent.move_and_slide()
|
|||
|
|
|
|||
|
|
func _handler_climb_state_finished() -> bool:
|
|||
|
|
if agent.is_on_floor():
|
|||
|
|
self.dispatch(&"exit_on_ground")
|
|||
|
|
else:
|
|||
|
|
self.dispatch(&"exit_on_air")
|
|||
|
|
|
|||
|
|
return true
|
|||
|
|
|
|||
|
|
func _handler_trigger_jump() -> bool:
|
|||
|
|
if self.get_active_state() == root.climb_state:
|
|||
|
|
self.dispatch(&"want_to_climb_jump")
|
|||
|
|
return true
|
|||
|
|
|
|||
|
|
func _handler_climb_jump_state_finished() -> bool:
|
|||
|
|
return true
|