Wind/Conveyor belt physics state modifier implemented.
This commit is contained in:
parent
4125e9351c
commit
3f19a92db6
File diff suppressed because one or more lines are too long
|
|
@ -7,6 +7,8 @@ export var modifier_name :String = ''
|
||||||
var animation_name: String = '' # Not using this one
|
var animation_name: String = '' # Not using this one
|
||||||
var timeout_seconds: float = 0.0 # Not doing timeout based ones yet either.
|
var timeout_seconds: float = 0.0 # Not doing timeout based ones yet either.
|
||||||
|
|
||||||
|
export var directional_modifier: bool = false
|
||||||
|
|
||||||
export var move_speed: float = 0.0
|
export var move_speed: float = 0.0
|
||||||
export var move_acceleration: float = 0.0
|
export var move_acceleration: float = 0.0
|
||||||
export var move_speed_modifier: float = 0.0
|
export var move_speed_modifier: float = 0.0
|
||||||
|
|
@ -35,6 +37,8 @@ func _ready():
|
||||||
move_speed_modifier,
|
move_speed_modifier,
|
||||||
move_modifier_move_acceleration,
|
move_modifier_move_acceleration,
|
||||||
jerk_factor)
|
jerk_factor)
|
||||||
|
print("Debug Direction property shy are you stopid?! ", directional_modifier)
|
||||||
|
modifier.modifier_properties.directional_modifier = directional_modifier
|
||||||
|
|
||||||
func _on_Modifier_Component_body_entered(body):
|
func _on_Modifier_Component_body_entered(body):
|
||||||
var colliding_node = body
|
var colliding_node = body
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,16 @@ func process_physics(delta: float) -> State:
|
||||||
|
|
||||||
move_actor_as_desired(delta)
|
move_actor_as_desired(delta)
|
||||||
|
|
||||||
if move_component.velocity.x == 0.0:
|
# if move_component.velocity.x == 0.0:
|
||||||
return idle_state
|
# return idle_state
|
||||||
|
|
||||||
#Flip the character before tha actual move maybe.
|
#Flip the character before tha actual move maybe.
|
||||||
if move_component.get_movement_direction() != 0.0:
|
if move_component.get_movement_direction() != 0.0:
|
||||||
parent.transform.x.x = move_component.get_movement_direction()
|
parent.transform.x.x = move_component.get_movement_direction()
|
||||||
|
|
||||||
|
if move_component.desired_movement_vector.x == 0:
|
||||||
|
return idle_state
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
return fall_state
|
return fall_state
|
||||||
return null
|
return null
|
||||||
|
|
|
||||||
|
|
@ -274,7 +274,7 @@ func move_actor_as_desired(delta: float, x_move_direction_override: float = 0):
|
||||||
#print(physics_modifier.name)
|
#print(physics_modifier.name)
|
||||||
#UiManager.debug_text = physics_modifier.name + str(round(adjusted_move_speed))
|
#UiManager.debug_text = physics_modifier.name + str(round(adjusted_move_speed))
|
||||||
var mod_props :ModifierProperties = physics_modifier.get_modifier_properties()
|
var mod_props :ModifierProperties = physics_modifier.get_modifier_properties()
|
||||||
if mod_props.move_speed != 0:
|
if mod_props.move_speed != 0 and mod_props.directional_modifier == false:
|
||||||
_move_speed = mod_props.move_speed
|
_move_speed = mod_props.move_speed
|
||||||
_move_speed_modifier += mod_props.move_speed_modifier
|
_move_speed_modifier += mod_props.move_speed_modifier
|
||||||
_move_acceleration += mod_props.move_acceleration
|
_move_acceleration += mod_props.move_acceleration
|
||||||
|
|
@ -287,26 +287,6 @@ func move_actor_as_desired(delta: float, x_move_direction_override: float = 0):
|
||||||
if _move_speed == 0 and move_component.desired_movement_vector.x != 0:
|
if _move_speed == 0 and move_component.desired_movement_vector.x != 0:
|
||||||
_move_speed = abs(move_component.desired_movement_vector.x)
|
_move_speed = abs(move_component.desired_movement_vector.x)
|
||||||
|
|
||||||
# Determine the maximum move speed
|
|
||||||
var MAX_SPEED :float = 0
|
|
||||||
var MIN_SPEED :float = 0
|
|
||||||
if sign(_move_speed_modifier) == -1: # decreased speed modifier
|
|
||||||
help_me_not_be_dumb += '-SpeedMod'
|
|
||||||
# Move speed cannot go below zero with modifier applied
|
|
||||||
MIN_SPEED = _move_speed + _move_speed_modifier
|
|
||||||
# Poor man's clamp
|
|
||||||
if MIN_SPEED < 0:
|
|
||||||
MIN_SPEED = 0
|
|
||||||
MAX_SPEED = _move_speed
|
|
||||||
elif sign(_move_speed_modifier) == +1: # increased speed modifier
|
|
||||||
help_me_not_be_dumb += '+SpeedMod'
|
|
||||||
MIN_SPEED = _move_speed
|
|
||||||
MAX_SPEED = _move_speed + _move_speed_modifier
|
|
||||||
else: # physics won't apply here
|
|
||||||
help_me_not_be_dumb += '_Speed' # Neutral Speed
|
|
||||||
MIN_SPEED = _move_speed
|
|
||||||
MAX_SPEED = _move_speed
|
|
||||||
|
|
||||||
# Determine or physics movement direction
|
# Determine or physics movement direction
|
||||||
var current_x_velocity = move_component.velocity.x #move_component.velocity.x
|
var current_x_velocity = move_component.velocity.x #move_component.velocity.x
|
||||||
var move_direction = 0.0
|
var move_direction = 0.0
|
||||||
|
|
@ -328,6 +308,41 @@ func move_actor_as_desired(delta: float, x_move_direction_override: float = 0):
|
||||||
else:
|
else:
|
||||||
move_direction = x_move_direction_override
|
move_direction = x_move_direction_override
|
||||||
|
|
||||||
|
## TODO: I hate that I have to do this check again.
|
||||||
|
if physics_modifier:
|
||||||
|
var mod_props :ModifierProperties = physics_modifier.get_modifier_properties()
|
||||||
|
if mod_props.move_speed != 0 and mod_props.directional_modifier == true:
|
||||||
|
# Since move_direction is always positive
|
||||||
|
if sign(move_direction) == sign(mod_props.move_speed):
|
||||||
|
_move_speed += mod_props.move_speed
|
||||||
|
else:
|
||||||
|
_move_speed -= mod_props.move_speed
|
||||||
|
if sign(move_direction) == 0:
|
||||||
|
move_direction = sign(mod_props.move_speed) * -1
|
||||||
|
#print("doing this? ")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the maximum move speed
|
||||||
|
var MAX_SPEED :float = 0
|
||||||
|
var MIN_SPEED :float = 0
|
||||||
|
if sign(_move_speed_modifier) == -1: # decreased speed modifier
|
||||||
|
help_me_not_be_dumb += '-SpeedMod'
|
||||||
|
# Move speed cannot go below zero with modifier applied
|
||||||
|
MIN_SPEED = _move_speed + _move_speed_modifier
|
||||||
|
# Poor man's clamp
|
||||||
|
if MIN_SPEED < 0:
|
||||||
|
MIN_SPEED = 0
|
||||||
|
MAX_SPEED = _move_speed
|
||||||
|
elif sign(_move_speed_modifier) == +1: # increased speed modifier
|
||||||
|
help_me_not_be_dumb += '+SpeedMod'
|
||||||
|
MIN_SPEED = _move_speed
|
||||||
|
MAX_SPEED = _move_speed + _move_speed_modifier
|
||||||
|
else: # physics won't apply here
|
||||||
|
help_me_not_be_dumb += '_Speed' # Neutral Speed
|
||||||
|
MIN_SPEED = _move_speed
|
||||||
|
MAX_SPEED = _move_speed
|
||||||
|
|
||||||
# get the latest aggregate acceleration
|
# get the latest aggregate acceleration
|
||||||
# If we have any acceleration applying
|
# If we have any acceleration applying
|
||||||
if (_move_modifier_move_acceleration + _move_acceleration) != 0:
|
if (_move_modifier_move_acceleration + _move_acceleration) != 0:
|
||||||
|
|
|
||||||
|
|
@ -84,12 +84,14 @@ func merge_modifier(merging_mod: ModifierProperties):
|
||||||
func get_modifier_properties() -> ModifierProperties:
|
func get_modifier_properties() -> ModifierProperties:
|
||||||
#( p_move_speed:float, p_gravity:int , p_move_acceleration , p_move_speed_modifier:float,
|
#( p_move_speed:float, p_gravity:int , p_move_acceleration , p_move_speed_modifier:float,
|
||||||
# p_move_modifier_move_acceleration:float, p_jerk_factor: float):
|
# p_move_modifier_move_acceleration:float, p_jerk_factor: float):
|
||||||
return ModifierProperties.new( modifier_properties.move_speed,
|
var mp = ModifierProperties.new( modifier_properties.move_speed,
|
||||||
modifier_properties.gravity,
|
modifier_properties.gravity,
|
||||||
modifier_properties.move_acceleration,
|
modifier_properties.move_acceleration,
|
||||||
modifier_properties.move_speed_modifier,
|
modifier_properties.move_speed_modifier,
|
||||||
modifier_properties.move_modifier_move_acceleration,
|
modifier_properties.move_modifier_move_acceleration,
|
||||||
modifier_properties.jerk_factor)
|
modifier_properties.jerk_factor)
|
||||||
|
mp.directional_modifier = modifier_properties.directional_modifier
|
||||||
|
return mp
|
||||||
|
|
||||||
func ready(modifier_name:String, anim_name:String = '', type = TYPE.NONE, timeout : float = 0, parent:Node = null, function_name : String = "") -> Timer:
|
func ready(modifier_name:String, anim_name:String = '', type = TYPE.NONE, timeout : float = 0, parent:Node = null, function_name : String = "") -> Timer:
|
||||||
name = modifier_name
|
name = modifier_name
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,10 @@ var jerk_factor: float = 0
|
||||||
|
|
||||||
var gravity:int = 0
|
var gravity:int = 0
|
||||||
|
|
||||||
|
# Bad name. Just means that it is intended to apply in a certain direction
|
||||||
|
# (Positive or negative) not an offset of the existing values.
|
||||||
|
var directional_modifier: bool = false
|
||||||
|
|
||||||
|
|
||||||
func _init( p_move_speed:float, p_gravity:int , p_move_acceleration , p_move_speed_modifier:float,
|
func _init( p_move_speed:float, p_gravity:int , p_move_acceleration , p_move_speed_modifier:float,
|
||||||
p_move_modifier_move_acceleration:float, p_jerk_factor: float):
|
p_move_modifier_move_acceleration:float, p_jerk_factor: float):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user