Added jerk, fixing state modifiers

This commit is contained in:
Dustin 2025-05-10 20:03:51 -07:00
parent 26df8ef0c4
commit 71a497b73b
21 changed files with 55 additions and 8 deletions

View File

@ -6,9 +6,10 @@ export var base_move_speed :Vector2
export var base_move_acceleration :Vector2 export var base_move_acceleration :Vector2
export var move_speed_modifier :Vector2 export var move_speed_modifier :Vector2
export var move_speed_modifier_acceleration :Vector2 export var move_speed_modifier_acceleration :Vector2
export var jerk_factor :Vector2
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity") var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
var jerk: float = 0.0 #var jerk: float = 0.0
## Can be set to help with debugging the velocity controller ## Can be set to help with debugging the velocity controller
export var debug_name :String export var debug_name :String
@ -71,10 +72,10 @@ func apply_state_modifier(_modifier :StateModifierMovement):
move_speed_modifier_acceleration.y += _modifier.vertical_speed_offset_acceleration move_speed_modifier_acceleration.y += _modifier.vertical_speed_offset_acceleration
UiManager.debug_text = ( #"H_Speed x Dir: " + str(h_speed) + str('duh') + UiManager.debug_text = ( #"H_Speed x Dir: " + str(h_speed) + str('duh') +
"BaseSpeed Fm:{0} To:{1}".format({"0":"%5.2f" % base_move_speed.x, "1":"%5.2f" % base_move_speed.y}) + "BaseSpeed Fm:{0} To:{1}".format({"0":"%5.2f" % base_move_speed.x, "1":"%5.2f" % base_move_speed.y}) +
"\nSpeedMod Fm:{0} To:{1}".format({"0":"%5.2f" % move_speed_modifier.x, "1":"%5.2f" % move_speed_modifier.y}) + "\nSpeedMod Fm:{0} To:{1}".format({"0":"%5.2f" % move_speed_modifier.x, "1":"%5.2f" % move_speed_modifier.y}) +
"\nMoveAccel: {0}, {1}".format({"0":"%4.1f" % base_move_acceleration.x, "1":"%4.1f" % base_move_acceleration.y}) + "\nMoveAccel: {0}, {1}".format({"0":"%4.1f" % base_move_acceleration.x, "1":"%4.1f" % base_move_acceleration.y}) +
"\nType: " + str(_modifier.modifier_type) "\nType: " + str(_modifier.modifier_type)
) )

View File

@ -17,6 +17,8 @@ onready var parent: KinematicBody2D = get_parent()
export var callable_state_machine :NodePath export var callable_state_machine :NodePath
var request_state_change: FuncRef var request_state_change: FuncRef
var get_state_machine_modifiers: FuncRef #get_modifiers_of_type
onready var desired_movement_vector: Vector2 = Vector2(0,0) onready var desired_movement_vector: Vector2 = Vector2(0,0)
# Since animactor state machine can actually view properties from this type # Since animactor state machine can actually view properties from this type
@ -44,6 +46,7 @@ func _ready():
## FuncRef to request state machine change state ## FuncRef to request state machine change state
request_state_change = funcref(get_node(callable_state_machine), 'change_to_known_state') request_state_change = funcref(get_node(callable_state_machine), 'change_to_known_state')
get_state_machine_modifiers = funcref(get_node(callable_state_machine), 'get_modifiers_of_type')
## Connect signal to get alerted of state change ## Connect signal to get alerted of state change
get_node(callable_state_machine).connect("state_changed", self,"_on_state_change") get_node(callable_state_machine).connect("state_changed", self,"_on_state_change")
## Get notified when modifiers updated ## Get notified when modifiers updated

View File

@ -24,6 +24,9 @@ export var vertical_speed_offset: float = 0
## Applies only if offset applies ## Applies only if offset applies
export var vertical_speed_offset_acceleration: float = 0 export var vertical_speed_offset_acceleration: float = 0
export var horizontal_jerk_factor: float = 1.0
export var vertical_jerk_factor: float = 1.0
## Should this state keep the inertia from previous states ## Should this state keep the inertia from previous states
export var preserve_inertia :bool = true export var preserve_inertia :bool = true
@ -33,8 +36,6 @@ export var is_grounded :bool = true
## Default state gravity is the project's gravity ## Default state gravity is the project's gravity
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity") var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
var jerk: float
## Variables intended to allow state receivers to communicate ## Variables intended to allow state receivers to communicate
var animation_finished: bool = false var animation_finished: bool = false
var animation_frame :int = -1 var animation_frame :int = -1
@ -50,7 +51,7 @@ func enter() -> void:
animation_finished = false animation_finished = false
movement_stopped = false movement_stopped = false
animation_frame = -1 animation_frame = -1
jerk = 0 #jerk = 0
return return

View File

@ -76,6 +76,14 @@ func merge_modifiers():
if m.is_active: if m.is_active:
this_mod_type.merge(m) this_mod_type.merge(m)
## When trying to get multiple modifiers
func get_modifiers_of_type(_modifier_type :String) -> Array:
var mod_array :Array = []
for m in state_modifiers:
if m.to_string() == _modifier_type:
mod_array.append(m)
return mod_array
# Change to the new state by first calling any exit logic on the current state. # Change to the new state by first calling any exit logic on the current state.
func change_state(new_state: State) -> void: func change_state(new_state: State) -> void:
var current_state_name :String var current_state_name :String

View File

@ -51,6 +51,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "hurt" ] animation_sequence = [ "hurt" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "attack-punch" ] animation_sequence = [ "attack-punch" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "attack-shoot" ] animation_sequence = [ "attack-shoot" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "attack-sword" ] animation_sequence = [ "attack-sword" ]

View File

@ -17,6 +17,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "climb" ] animation_sequence = [ "climb" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "idle-crouch" ] animation_sequence = [ "idle-crouch" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "run_crouch" ] animation_sequence = [ "run_crouch" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "death" ] animation_sequence = [ "death" ]

View File

@ -17,6 +17,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "walk" ] animation_sequence = [ "walk" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = false is_grounded = false
animation_sequence = [ "jump" ] animation_sequence = [ "jump" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "idle" ] animation_sequence = [ "idle" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 200.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = -208.0 vertical_speed_offset = -208.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = false is_grounded = false
animation_sequence = [ "jump" ] animation_sequence = [ "jump" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "land" ] animation_sequence = [ "land" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "ledge-climb" ] animation_sequence = [ "ledge-climb" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "ledge-grab" ] animation_sequence = [ "ledge-grab" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = true preserve_inertia = true
is_grounded = true is_grounded = true
animation_sequence = [ "run" ] animation_sequence = [ "run" ]

View File

@ -18,6 +18,8 @@ vertical_speed = 0.0
vertical_acceleration = 0.0 vertical_acceleration = 0.0
vertical_speed_offset = 0.0 vertical_speed_offset = 0.0
vertical_speed_offset_acceleration = 0.0 vertical_speed_offset_acceleration = 0.0
horizontal_jerk_factor = 1.0
vertical_jerk_factor = 1.0
preserve_inertia = false preserve_inertia = false
is_grounded = true is_grounded = true
animation_sequence = [ "roll" ] animation_sequence = [ "roll" ]