Compare commits
2 Commits
26df8ef0c4
...
0ac1c4abef
| Author | SHA1 | Date | |
|---|---|---|---|
| 0ac1c4abef | |||
| 71a497b73b |
|
|
@ -6,9 +6,10 @@ export var base_move_speed :Vector2
|
|||
export var base_move_acceleration :Vector2
|
||||
export var move_speed_modifier :Vector2
|
||||
export var move_speed_modifier_acceleration :Vector2
|
||||
export var jerk_factor :Vector2
|
||||
|
||||
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
|
||||
export var debug_name :String
|
||||
|
|
@ -28,7 +29,7 @@ func modify(_movement_parameters :MovementParameters):
|
|||
|
||||
func apply_multiple_modifiers( _modifiers: Array):
|
||||
for m in _modifiers:
|
||||
if m is StateModifierAnimatedActor:
|
||||
if m is StateModifierMovement:
|
||||
apply_state_modifier(m)
|
||||
|
||||
func apply_state_modifier(_modifier :StateModifierMovement):
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ onready var parent: KinematicBody2D = get_parent()
|
|||
export var callable_state_machine :NodePath
|
||||
var request_state_change: FuncRef
|
||||
|
||||
var get_state_machine_modifiers: FuncRef #get_modifiers_of_type
|
||||
|
||||
onready var desired_movement_vector: Vector2 = Vector2(0,0)
|
||||
|
||||
# Since animactor state machine can actually view properties from this type
|
||||
|
|
@ -44,6 +46,7 @@ func _ready():
|
|||
|
||||
## FuncRef to request state machine change 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
|
||||
get_node(callable_state_machine).connect("state_changed", self,"_on_state_change")
|
||||
## Get notified when modifiers updated
|
||||
|
|
@ -145,10 +148,14 @@ func _on_modifiers_updated(_modifier_type :int, _modifier_action :int, _merged_m
|
|||
modifier = _merged_modifier
|
||||
|
||||
func apply_state_modifier(movement_parameters :MovementParameters) -> MovementParameters:
|
||||
if modifier and modifier.is_active:
|
||||
if (current_state.is_grounded and modifier.only_grounded): # Should we skip
|
||||
movement_parameters.apply_state_modifier(modifier)
|
||||
# if modifier and modifier.is_active:
|
||||
# if (current_state.is_grounded and modifier.only_grounded): # Should we skip
|
||||
# movement_parameters.apply_state_modifier(modifier)
|
||||
|
||||
var active_mods :bool= true
|
||||
var mods :Array = get_state_machine_modifiers.call_func('StateModifierMovement', active_mods)
|
||||
if (mods.size() > 0):
|
||||
movement_parameters.apply_multiple_modifiers(mods)
|
||||
return movement_parameters
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ export var vertical_speed_offset: float = 0
|
|||
## Applies only if offset applies
|
||||
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
|
||||
export var preserve_inertia :bool = true
|
||||
|
||||
|
|
@ -33,8 +36,6 @@ export var is_grounded :bool = true
|
|||
## Default state gravity is the project's gravity
|
||||
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
|
||||
|
||||
var jerk: float
|
||||
|
||||
## Variables intended to allow state receivers to communicate
|
||||
var animation_finished: bool = false
|
||||
var animation_frame :int = -1
|
||||
|
|
@ -50,7 +51,7 @@ func enter() -> void:
|
|||
animation_finished = false
|
||||
movement_stopped = false
|
||||
animation_frame = -1
|
||||
jerk = 0
|
||||
#jerk = 0
|
||||
|
||||
return
|
||||
|
||||
|
|
|
|||
|
|
@ -76,6 +76,15 @@ func merge_modifiers():
|
|||
if m.is_active:
|
||||
this_mod_type.merge(m)
|
||||
|
||||
## When trying to get multiple modifiers
|
||||
func get_modifiers_of_type(_modifier_type :String, _only_active: bool = false) -> Array:
|
||||
var mod_array :Array = []
|
||||
for m in state_modifiers:
|
||||
if m.to_string() == _modifier_type:
|
||||
if (_only_active and m.is_active) or _only_active == false:
|
||||
mod_array.append(m)
|
||||
return mod_array
|
||||
|
||||
# Change to the new state by first calling any exit logic on the current state.
|
||||
func change_state(new_state: State) -> void:
|
||||
var current_state_name :String
|
||||
|
|
|
|||
|
|
@ -51,6 +51,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "hurt" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "attack-punch" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "attack-shoot" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "attack-sword" ]
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "climb" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "idle-crouch" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "run_crouch" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "death" ]
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "walk" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = false
|
||||
animation_sequence = [ "jump" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "idle" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 200.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = -208.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = false
|
||||
animation_sequence = [ "jump" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "land" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "ledge-climb" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "ledge-grab" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = true
|
||||
is_grounded = true
|
||||
animation_sequence = [ "run" ]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ vertical_speed = 0.0
|
|||
vertical_acceleration = 0.0
|
||||
vertical_speed_offset = 0.0
|
||||
vertical_speed_offset_acceleration = 0.0
|
||||
horizontal_jerk_factor = 1.0
|
||||
vertical_jerk_factor = 1.0
|
||||
preserve_inertia = false
|
||||
is_grounded = true
|
||||
animation_sequence = [ "roll" ]
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user