verifying roll on movement state machine

This commit is contained in:
Dustin 2025-03-25 11:54:29 -07:00
parent 41eac6ea9b
commit 048c3ff8c1
3 changed files with 21 additions and 16 deletions

View File

@ -31,9 +31,7 @@ var acceleration = Vector2(0,0)
var physics_delta:float
var process_delta:float
#Can't use floats here, switched to constants.
#enum directions {UP = -1, DOWN = 1, LEFT, RIGHT}
var modifier: StateModifierAnimatedActor
#Removing Probably not used
#var attack_function: FuncRef
@ -44,12 +42,17 @@ const LEFT = -1.0
const RIGHT = 1.0
func _ready():
## FuncRef to request state machine change state
request_state_change = funcref(get_node(callable_state_machine), 'change_to_known_state')
## Connect signal to get alerted of state change
get_node(callable_state_machine).connect("state_changed", self,"_on_state_change")
## A reference to the current state machine state
current_state = get_node(callable_state_machine).current_state
## A reference to the state machine merged modifiers
modifier = get_node(callable_state_machine).merged_animation_state_modifiers
############
# These get called by the parent
## These get called by the parent
############
func process_physics(delta):
physics_delta = delta
@ -79,7 +82,9 @@ func process_input(event: InputEvent):
############
# A Series of helper functions
############
## A Series of helper functions
############
func go_up():
desired_movement_vector.y = UP
func go_down():
@ -114,6 +119,7 @@ func wants_roll() -> bool:
func wants_climb() -> bool:
return false
############
func get_climb_shape_location() -> Vector2:
return Vector2(-1,-1)
@ -194,7 +200,6 @@ func move_actor_as_desired( x_move_direction_override: float = 0):
# #print("doing this? ")
# Determine the maximum move speed
var MAX_SPEED :float = 0
var MIN_SPEED :float = 0
@ -222,7 +227,7 @@ func move_actor_as_desired( x_move_direction_override: float = 0):
# Perhaps it would be better to trigger this on a difference in modifier but they usually go together.
if abs(acceleration.x) != abs(_move_modifier_move_acceleration + _move_acceleration):
if move_direction:
print("Acceleration changed.", abs(acceleration.x), "-", (_move_modifier_move_acceleration + _move_acceleration))
#print("Acceleration changed.", abs(acceleration.x), "-", (_move_modifier_move_acceleration + _move_acceleration))
acceleration.x = _move_modifier_move_acceleration + _move_acceleration
# If we're no longer tryingg to move int the direction of our movement and momentum.
@ -260,7 +265,7 @@ func move_actor_as_desired( x_move_direction_override: float = 0):
momentum.x = 0
elif sign(_move_speed_modifier) == +1: # increased speed modifier
##TODO: in most cases this should only be applied once. need to find a way to warn against this.
momentum.x = abs(current_state.move_speed_modifier)
momentum.x = abs(_move_speed_modifier)
print("momentum applied!")
# Reverse the accelerations if we carry over momentum but the modifier no longer applies.
@ -273,6 +278,7 @@ func move_actor_as_desired( x_move_direction_override: float = 0):
# We're going to adjust our move speed only to the modifier
momentum.x += acceleration.x * delta
##TODO: Apparently I disabled jerk some time ago for some reason.
current_state.jerk += _jerk_factor * delta

View File

@ -51,8 +51,7 @@ func _ready():
# animation = 'idle-attack-sword'
func _on_state_change_fall():
change_animation()
frame = 2
change_animation(2)
stop()
func _on_state_exited_attack_sword():

View File

@ -9,9 +9,9 @@ script = ExtResource( 1 )
debug_state = false
timeout_seconds = 0.0
name = "roll"
horizontal_speed = 60.0
horizontal_acceleration = 0.0
horizontal_speed_offset = 0.0
horizontal_speed_offset_acceleration = 0.0
horizontal_speed = 10.0
horizontal_acceleration = 1.36422e-12
horizontal_speed_offset = 150.0
horizontal_speed_offset_acceleration = -150.0
jerk_factor = 0.0
animation_sequence = [ "roll" ]