diff --git a/lib/classes/movement_parameters.gd b/lib/classes/movement_parameters.gd index 96a8685..fe28aa7 100644 --- a/lib/classes/movement_parameters.gd +++ b/lib/classes/movement_parameters.gd @@ -1,6 +1,13 @@ class_name MovementParameters extends Reference +# Allow floats from -10 to 20 and snap the value to multiples of 0.2. + +export(PoolVector2Array) var _speed_start = PoolVector2Array([Vector2(0,0),Vector2(0,0),Vector2(0,0)]) +export(PoolVector2Array) var _speed_end = PoolVector2Array([Vector2(0,0),Vector2(0,0),Vector2(0,0)]) +export(PoolVector2Array) var _acceleration = PoolVector2Array([Vector2(0,0),Vector2(0,0),Vector2(0,0)]) + + ## Vector based ones for x and y export var base_move_speed :Vector2 export var base_move_acceleration :Vector2 @@ -24,6 +31,25 @@ export var debug_name :String # export var v_move_speed_modifier :float # export var v_move_modifier_move_acceleration :float +func get_speed_start(direction :int) -> Vector2: + return _speed_start[direction] + +func set_speed_start(direction :int, value :Vector2) -> void: + _speed_start[direction] = value + +func get_speed_end(direction :int) -> Vector2: + return _speed_end[direction] + +func set_speed_end(direction :int, value :Vector2) -> void: + _speed_end[direction] = value + +func get_acceleration(direction :int) -> Vector2: + return _acceleration[direction] + +func set_acceleration(direction :int, value :Vector2) -> void: + _acceleration[direction] = value + + func modify(_movement_parameters :MovementParameters): pass @@ -42,12 +68,53 @@ func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction base_move_speed.x = 0.0 else: base_move_speed.x = adjusted_move_speed + + var speed :Vector2 = get_speed_start(_modifier.direction) + adjusted_move_speed = get_speed_start(_modifier.direction) + _modifier.speed_start + if sign(adjusted_move_speed.x) != sign(speed.x): + speed.x = 0.0 + else: + speed.x = adjusted_move_speed.x + if sign(adjusted_move_speed.y) != sign(speed.y): + speed.y = 0.0 + else: + speed.y = adjusted_move_speed.y + set_speed_start(_modifier.direction, speed) + + speed = get_speed_end(_modifier.direction) + adjusted_move_speed = get_speed_end(_modifier.direction) + _modifier.speed_end + if sign(adjusted_move_speed.x) != sign(speed.x): + speed.x = 0.0 + else: + speed.x = adjusted_move_speed.x + if sign(adjusted_move_speed.y) != sign(speed.y): + speed.y = 0.0 + else: + speed.y = adjusted_move_speed.y + set_speed_end(_modifier.direction, speed) + + var adjusted_accel = base_move_acceleration.x + _modifier.horizontal_acceleration if sign(adjusted_accel) != sign(base_move_acceleration.x): base_move_acceleration.x = 0.0 else: base_move_acceleration.x = adjusted_accel - + + var accel :Vector2 = get_acceleration(_modifier.direction) + adjusted_accel = get_acceleration(_modifier.direction) + _modifier.acceleration + if sign(adjusted_accel.x) != sign(accel.x): + accel.x = 0.0 + else: + accel.x = adjusted_accel.x + if sign(adjusted_accel.y) != sign(accel.y): + accel.y = 0.0 + else: + accel.y = adjusted_accel.y + set_acceleration(_modifier.direction, accel) + + if (true): #DEGUG + var foo = 2+2 + ##TODO: Um, modifiers are a little weirder for this #move_speed_modifier.x += _modifier.horizontal_speed_offset var speed_differance = base_move_speed.x + (move_speed_modifier.x + _modifier.horizontal_speed_offset) @@ -71,6 +138,22 @@ func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction move_speed_modifier.y += _modifier.vertical_speed_offset move_speed_modifier_acceleration.y += _modifier.vertical_speed_offset_acceleration + set_speed_start( + _modifier.direction, + (get_speed_start(_modifier.direction) + _modifier.speed_start) + ) + set_speed_end( + _modifier.direction, + (get_speed_end(_modifier.direction) + _modifier.speed_end) + ) + set_acceleration( + _modifier.direction, + (get_acceleration(_modifier.direction) + _modifier.acceleration) + ) + + if (true): #DEGUG + var foo = 2+2 + 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}) + "\nSpeedMod Fm:{0} To:{1}".format({"0":"%5.2f" % move_speed_modifier.x, "1":"%5.2f" % move_speed_modifier.y}) + diff --git a/lib/classes/state_animated_actor.gd b/lib/classes/state_animated_actor.gd index f356e88..ad69c1a 100644 --- a/lib/classes/state_animated_actor.gd +++ b/lib/classes/state_animated_actor.gd @@ -7,7 +7,20 @@ extends State ## ## @WIP +const RELATIVE_DIRECTION = 0 + # Movement Speed in Pixels Per Second +export(Vector2) var speed_start +export(Vector2) var speed_end = Vector2(0,1000) +export(Vector2) var acceleration = Vector2(0,280) +export(Vector2) var jerk_factor = Vector2(1,1) +#export(Vector2) var speed_start_positive +#export(Vector2) var speed_end_positive +#export(Vector2) var acceleration_positive +#export(Vector2) var speed_start_negative +#export(Vector2) var speed_end_negative +#export(Vector2) var acceleration_negative + # The base movement speed and accelleration export var horizontal_speed: float = 60 export var horizontal_acceleration: float = 0 @@ -15,7 +28,7 @@ export var horizontal_acceleration: float = 0 export var horizontal_speed_offset: float = 0 ## Applies only if offset applies export var horizontal_speed_offset_acceleration: float = 0 -export var jerk_factor: float = 1.0 +#export var jerk_factor: float = 1.0 export var vertical_speed: float = 0 export var vertical_acceleration: float = 0 @@ -25,7 +38,7 @@ export var vertical_speed_offset: 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 +export var vertical_jerk_factor: float = 1.0 ## Should this state keep the inertia from previous states export var preserve_inertia :bool = true @@ -57,7 +70,17 @@ func enter() -> void: func get_movement_parameters() -> MovementParameters: var movement_parameters = MovementParameters.new() + movement_parameters.debug_name = name + movement_parameters.set_speed_start(RELATIVE_DIRECTION, speed_start) + #movement_parameters.speed_start = speed_start + movement_parameters.set_speed_end(RELATIVE_DIRECTION, speed_end) + #movement_parameters.speed_end = speed_end + movement_parameters.set_acceleration(RELATIVE_DIRECTION, acceleration) + #movement_parameters.acceleration = acceleration + movement_parameters.jerk_factor = jerk_factor + + ## Old stuff movement_parameters.base_move_speed.x = horizontal_speed movement_parameters.base_move_acceleration.x = horizontal_acceleration movement_parameters.move_speed_modifier.x = horizontal_speed_offset diff --git a/lib/classes/state_modifier_movement.gd b/lib/classes/state_modifier_movement.gd index 0aba87d..5693449 100644 --- a/lib/classes/state_modifier_movement.gd +++ b/lib/classes/state_modifier_movement.gd @@ -1,6 +1,22 @@ class_name StateModifierMovement extends StateModifier +#export(float, -1.0, 1, 1.0) var applied_direction = 0 + +#export (Transform2D) var speed = Transform2D(Vector2(0,0),Vector2(0,0),Vector2(0,0)) +#export(float, EXP, -1, 1, .1) var jerk_offset = 0 +## Processing Directives (help determine how the merge function works) +enum APPLIED_DIRECTIONS { + LEFT_OR_UP = -1, + RELATIVE = 0, + RIGHT_OR_DOWN = 1 +} +export(APPLIED_DIRECTIONS) var direction :float = float(APPLIED_DIRECTIONS.RELATIVE) # -1, 0, 1 + +export(Vector2) var speed_start +export(Vector2) var speed_end +export(Vector2) var acceleration + ## Movement Modifiers export var horizontal_speed: float = 0 export var horizontal_acceleration: float = 0 @@ -19,13 +35,6 @@ export var vertical_speed_offset_acceleration: float = 0 export var gravity: int = 0 -## Processing Directives (help determine how the merge function works) -enum APPLIED_DIRECTIONS { - LEFT_OR_UP = -1, - RELATIVE = 0, - RIGHT_OR_DOWN = 1 -} -export(APPLIED_DIRECTIONS) var direction :float = float(APPLIED_DIRECTIONS.RELATIVE) # -1, 0, 1 export var only_grounded :bool = false ## Ways to determine how modifiers are applied to movement parameters @@ -81,6 +90,10 @@ func merge(_merge_from_modifier: StateModifier): ##TODO: I don't really need merge functions here? match _merge_from_modifier.modifier_type: _: + speed_end += _merge_from_modifier.speed_end + speed_start += _merge_from_modifier.speed_start + acceleration += _merge_from_modifier.acceleration + horizontal_speed += _merge_from_modifier.horizontal_speed horizontal_acceleration += _merge_from_modifier.horizontal_acceleration horizontal_speed_offset += _merge_from_modifier.horizontal_speed_offset diff --git a/src/Interactables/modifiers/icy_surface.tres b/src/Interactables/modifiers/icy_surface.tres index 475a6a0..414da30 100644 --- a/src/Interactables/modifiers/icy_surface.tres +++ b/src/Interactables/modifiers/icy_surface.tres @@ -9,6 +9,10 @@ script = ExtResource( 1 ) modifier_type = 0 name = "ice_or_something" timeout_seconds = 0.0 +direction = 0 +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 0 ) +acceleration = Vector2( -250, 1.36422e-12 ) horizontal_speed = 0.0 horizontal_acceleration = -250.0 horizontal_speed_offset = 0.0 @@ -18,6 +22,5 @@ vertical_acceleration = 0.0 vertical_speed_offset = 0.0 vertical_speed_offset_acceleration = 0.0 gravity = 0 -direction = 0 only_grounded = true processing_mode = 0 diff --git a/src/Interactables/modifiers/left_conveyor.tres b/src/Interactables/modifiers/left_conveyor.tres index 14a1bd0..0b85c95 100644 --- a/src/Interactables/modifiers/left_conveyor.tres +++ b/src/Interactables/modifiers/left_conveyor.tres @@ -9,6 +9,10 @@ script = ExtResource( 1 ) modifier_type = 0 name = "conveyor_left" timeout_seconds = 0.0 +direction = -1 +speed_start = Vector2( 30, 1.36422e-12 ) +speed_end = Vector2( 30, 1.36422e-12 ) +acceleration = Vector2( 0, 0 ) horizontal_speed = -30.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 @@ -18,6 +22,5 @@ vertical_acceleration = 0.0 vertical_speed_offset = 0.0 vertical_speed_offset_acceleration = 0.0 gravity = 0 -direction = -1 only_grounded = true processing_mode = 0 diff --git a/src/Interactables/modifiers/left_wind.tres b/src/Interactables/modifiers/left_wind.tres index 4794dea..a2e1dad 100644 --- a/src/Interactables/modifiers/left_wind.tres +++ b/src/Interactables/modifiers/left_wind.tres @@ -9,6 +9,10 @@ script = ExtResource( 1 ) modifier_type = 0 name = "wind_left" timeout_seconds = 0.0 +direction = -1 +speed_start = Vector2( 30, 1.36422e-12 ) +speed_end = Vector2( 30, 1.36422e-12 ) +acceleration = Vector2( 0, 0 ) horizontal_speed = -30.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 @@ -18,6 +22,5 @@ vertical_acceleration = 0.0 vertical_speed_offset = 0.0 vertical_speed_offset_acceleration = 0.0 gravity = 0 -direction = -1 only_grounded = false processing_mode = 0 diff --git a/src/actors/players/playerE/PlayerE.gd b/src/actors/players/playerE/PlayerE.gd index 45a7b85..c2dde89 100644 --- a/src/actors/players/playerE/PlayerE.gd +++ b/src/actors/players/playerE/PlayerE.gd @@ -71,6 +71,7 @@ func _ready(): movement_component.state_stamina_cost = state_stamina_cost tired_debuff_modifier.setup('so_tired', StateModifierMovement.SUB_TYPE.NEGATIVE_CONSTRAINT) + tired_debuff_modifier.speed_start = Vector2(-40,0) tired_debuff_modifier.horizontal_speed = -40 tired_debuff_modifier.only_grounded = true movement_state_machine.push_state_modifier(tired_debuff_modifier) diff --git a/src/actors/players/playerE/PlayerE.tscn b/src/actors/players/playerE/PlayerE.tscn index 1529870..ed5f5f4 100644 --- a/src/actors/players/playerE/PlayerE.tscn +++ b/src/actors/players/playerE/PlayerE.tscn @@ -38,15 +38,19 @@ [sub_resource type="Resource" id=3] resource_local_to_scene = true +resource_name = "hurt" script = ExtResource( 18 ) debug_state = false timeout_seconds = 2.0 name = "hurt" +speed_start = Vector2( 20, 1.36422e-12 ) +speed_end = Vector2( 20, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 20.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/attack_punch.tres b/src/actors/players/playerE/states/attack_punch.tres index 1a8feda..0659a1d 100644 --- a/src/actors/players/playerE/states/attack_punch.tres +++ b/src/actors/players/playerE/states/attack_punch.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "attack_punch" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/attack_shoot.tres b/src/actors/players/playerE/states/attack_shoot.tres index f5479d5..a8ee01f 100644 --- a/src/actors/players/playerE/states/attack_shoot.tres +++ b/src/actors/players/playerE/states/attack_shoot.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "attack_shoot" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/attack_sword.tres b/src/actors/players/playerE/states/attack_sword.tres index 2362c23..4eb1b37 100644 --- a/src/actors/players/playerE/states/attack_sword.tres +++ b/src/actors/players/playerE/states/attack_sword.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "attack_sword" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/climb.tres b/src/actors/players/playerE/states/climb.tres index d16b15d..8940cba 100644 --- a/src/actors/players/playerE/states/climb.tres +++ b/src/actors/players/playerE/states/climb.tres @@ -8,11 +8,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "climb" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 20.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/crouch.tres b/src/actors/players/playerE/states/crouch.tres index 6a4a8e3..b5d32cb 100644 --- a/src/actors/players/playerE/states/crouch.tres +++ b/src/actors/players/playerE/states/crouch.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "crouch" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/crouch_move.tres b/src/actors/players/playerE/states/crouch_move.tres index 329375d..685b52b 100644 --- a/src/actors/players/playerE/states/crouch_move.tres +++ b/src/actors/players/playerE/states/crouch_move.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "crouch_move" +speed_start = Vector2( 60, 1.36422e-12 ) +speed_end = Vector2( 60, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 60.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/death.tres b/src/actors/players/playerE/states/death.tres index 831caea..f12cbc1 100644 --- a/src/actors/players/playerE/states/death.tres +++ b/src/actors/players/playerE/states/death.tres @@ -9,17 +9,20 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "death" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 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 +preserve_inertia = false is_grounded = true animation_sequence = [ "death" ] diff --git a/src/actors/players/playerE/states/enter_right.tres b/src/actors/players/playerE/states/enter_right.tres index f111c85..8f0f185 100644 --- a/src/actors/players/playerE/states/enter_right.tres +++ b/src/actors/players/playerE/states/enter_right.tres @@ -8,11 +8,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 1.0 name = "enter_right" +speed_start = Vector2( 30, 1.36422e-12 ) +speed_end = Vector2( 30, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 30.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/fall.tres b/src/actors/players/playerE/states/fall.tres index dcb5d52..3cca3d3 100644 --- a/src/actors/players/playerE/states/fall.tres +++ b/src/actors/players/playerE/states/fall.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "fall" +speed_start = Vector2( 90, 1.36422e-12 ) +speed_end = Vector2( 90, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 90.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 1.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/idle.tres b/src/actors/players/playerE/states/idle.tres index 9ac8123..1a609f3 100644 --- a/src/actors/players/playerE/states/idle.tres +++ b/src/actors/players/playerE/states/idle.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "idle" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 300.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 1.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/jump.tres b/src/actors/players/playerE/states/jump.tres index d487c29..7b6f45f 100644 --- a/src/actors/players/playerE/states/jump.tres +++ b/src/actors/players/playerE/states/jump.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "jump" +speed_start = Vector2( 90, 1.36422e-12 ) +speed_end = Vector2( 90, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 90.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 1.0 vertical_speed = 200.0 vertical_acceleration = 0.0 vertical_speed_offset = -208.0 diff --git a/src/actors/players/playerE/states/land.tres b/src/actors/players/playerE/states/land.tres index bded577..9d07193 100644 --- a/src/actors/players/playerE/states/land.tres +++ b/src/actors/players/playerE/states/land.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "land" +speed_start = Vector2( 20, 1.36422e-12 ) +speed_end = Vector2( 20, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 20.0 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/ledge_climb.tres b/src/actors/players/playerE/states/ledge_climb.tres index 23776f8..f765e00 100644 --- a/src/actors/players/playerE/states/ledge_climb.tres +++ b/src/actors/players/playerE/states/ledge_climb.tres @@ -9,17 +9,20 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "ledge_climb" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 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 +preserve_inertia = false is_grounded = true animation_sequence = [ "ledge-climb" ] diff --git a/src/actors/players/playerE/states/ledge_grab.tres b/src/actors/players/playerE/states/ledge_grab.tres index cf635c5..ac97c6b 100644 --- a/src/actors/players/playerE/states/ledge_grab.tres +++ b/src/actors/players/playerE/states/ledge_grab.tres @@ -9,17 +9,20 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "ledge_grab" +speed_start = Vector2( 0, 0 ) +speed_end = Vector2( 0, 1000 ) +acceleration = Vector2( 0, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 1.36422e-12 horizontal_acceleration = 0.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 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 +preserve_inertia = false is_grounded = true animation_sequence = [ "ledge-grab" ] diff --git a/src/actors/players/playerE/states/move.tres b/src/actors/players/playerE/states/move.tres index 694a8cf..8902ab0 100644 --- a/src/actors/players/playerE/states/move.tres +++ b/src/actors/players/playerE/states/move.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "move" +speed_start = Vector2( 10, 1.36422e-12 ) +speed_end = Vector2( 90, 1000 ) +acceleration = Vector2( 70, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 10.0 horizontal_acceleration = 70.0 horizontal_speed_offset = 80.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/actors/players/playerE/states/roll.tres b/src/actors/players/playerE/states/roll.tres index 7bef6fe..e7e9938 100644 --- a/src/actors/players/playerE/states/roll.tres +++ b/src/actors/players/playerE/states/roll.tres @@ -9,11 +9,14 @@ script = ExtResource( 1 ) debug_state = false timeout_seconds = 0.0 name = "roll" +speed_start = Vector2( 150, 1.36422e-12 ) +speed_end = Vector2( 10, 1000 ) +acceleration = Vector2( 300, 280 ) +jerk_factor = Vector2( 1, 1 ) horizontal_speed = 150.0 horizontal_acceleration = 1.36422e-12 horizontal_speed_offset = -140.0 horizontal_speed_offset_acceleration = -300.0 -jerk_factor = 1.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 diff --git a/src/classes/velocity_controller.gd b/src/classes/velocity_controller.gd index 00a12e8..fb59542 100644 --- a/src/classes/velocity_controller.gd +++ b/src/classes/velocity_controller.gd @@ -3,6 +3,10 @@ class_name VelocityController var velocity :Vector2 var debug :bool = false +const RELATIVE_DIRECTION = 0 +const POSITIVE_DIRECTION = 1 +const NEGATIVE_DIRECTION = -1 + enum RANGE_PLACEMENT { BEFORE_RANGE = -1, WITHIN_RANGE = 0, @@ -73,10 +77,25 @@ func calculate_velocity(_delta :float, # is the destination speed. # We move towards h_speed.y at the acceleration rate ## - var h_speed = resolve_h_speed(movement_parameters) - var v_speed = resolve_v_speed(movement_parameters) + #var h_speed = resolve_h_speed(movement_parameters) + var start_speed :float = ( + (movement_parameters.get_speed_start(RELATIVE_DIRECTION).x * move_direction.x) + + (movement_parameters.get_speed_start(POSITIVE_DIRECTION).x * POSITIVE_DIRECTION) - + (movement_parameters.get_speed_start(NEGATIVE_DIRECTION).x * NEGATIVE_DIRECTION) + ) + var end_speed :float = ( + (movement_parameters.get_speed_end(RELATIVE_DIRECTION).x * move_direction.x) + + (movement_parameters.get_speed_end(POSITIVE_DIRECTION).x * POSITIVE_DIRECTION) - + (movement_parameters.get_speed_end(NEGATIVE_DIRECTION).x * NEGATIVE_DIRECTION) + ) + + var h_speed = Vector2(start_speed, end_speed) + #var h_speed = Vector2(movement_parameters.get_speed_start(RELATIVE_DIRECTION).x , movement_parameters.get_speed_end(RELATIVE_DIRECTION).x) + #var v_speed = resolve_v_speed(movement_parameters) + var v_speed = Vector2(movement_parameters.get_speed_start(0).y, movement_parameters.get_speed_end(0).y) + ## Speed will now be expected to move in the direction of travel - h_speed *= move_direction.x + #h_speed *= move_direction.x v_speed *= move_direction.y ## Now determine placement of current velocity to speed range @@ -102,6 +121,10 @@ func calculate_velocity(_delta :float, ## Acceleration is always postive because we use the # move toward functions. calc_acceleration.x = abs(resolve_h_acceleration(movement_parameters, move_direction.x)) +# if move_direction.x != 0: +# calc_acceleration.x = movement_parameters.get_acceleration(0).x +# if move_direction.y != 0: +# calc_acceleration.y = movement_parameters.get_acceleration(0).y if debug and movement_parameters.debug_name == 'roll': var foo = 2+2