Compare commits

..

2 Commits

2 changed files with 11 additions and 52 deletions

View File

@ -203,10 +203,8 @@ func new_move_actor_as_desired(_delta :float,
# calc_friction.x = calc_acceleration.x
# calc_acceleration.x = 0.0
## We are always moving from h_speed.x towards y at a given rate
## if we have a difference of speed
if h_speed.x != h_speed.y:
debug_speed_tracker = h_speed
@ -228,30 +226,9 @@ func new_move_actor_as_desired(_delta :float,
h_speed.y , h_speed.x)
var foo = 3
## Apply friction
#calc_inertia.x = move_toward(calc_inertia.x, 0, (calc_friction.x * _delta))
# calc_inertia.x = clamp( calc_inertia.x + (calc_friction.x * _delta),
# 0 , h_speed.y)
## Disable this for now hopefully inertial acceleration flip removes this
## Update: it mostly did. Going to keep this here for a while though.
# The above problem may need a few different scenarios when there is already
# applied inertia.
# if calc_inertia.x == 0.0:
# #calc_inertia.x = lerp( h_speed.x , h_speed.y, calc_acceleration.x * _delta)
# calc_inertia.x = clamp( calc_inertia.x + (calc_acceleration.x * _delta),
# h_speed.x , h_speed.y)
# else:
# #calc_inertia.x = lerp( calc_inertia.x, h_speed.y, calc_acceleration.x * _delta)
# calc_inertia.x = clamp( calc_inertia.x + ( calc_acceleration.x * _delta),
# calc_inertia.x, h_speed.y)
elif calc_inertia.x != 0.0: ## We still have inertia but no difference in movement
if calc_acceleration.x != 0.0: # We are applying acceleration
## Move back towards the base speed
# calc_inertia.x = clamp( calc_inertia.x + (calc_acceleration.x * _delta),
# h_speed.x , h_speed.y)
if calc_inertia.x < h_speed.x:
calc_inertia.x = clamp( calc_inertia.x + ( calc_acceleration.x * _delta),
calc_inertia.x, h_speed.x)
@ -265,12 +242,7 @@ func new_move_actor_as_desired(_delta :float,
calc_friction.x = resolve_h_acceleration(movement_params,Vector2(calc_inertia.x, h_speed.x), move_direction.x)
if calc_friction.x != 0.0: ## No dapening acceleration applies
calc_inertia.x = move_toward(calc_inertia.x, h_speed.x, ( calc_friction.x * _delta))
# if calc_inertia.x > h_speed.x: ## Inertia is higher than the base speed (slow it down)
# calc_inertia.x = clamp( calc_inertia.x + ( calc_friction.x * _delta),
# h_speed.x, calc_inertia.x)
# else: ## Inertia lower than base speed (we need to catch up)
# calc_inertia.x = clamp( calc_inertia.x + ( calc_friction.x * _delta),
# calc_inertia.x, h_speed.x)
else:
## no residual acceleration (friction) applies, kill the momentum
calc_inertia.x = 0.0
@ -335,40 +307,27 @@ func resolve_h_speed(_params :Dictionary) -> Vector2:
if _params["_base_h_move_speed_modifier"] != 0:
var speed_differance = base_speed + _params["_base_h_move_speed_modifier"]
# if sign(_params["_base_h_move_speed_modifier"]) == -1:
# return Vector2(speed_differance, base_speed)
# else:
# return Vector2(base_speed, speed_differance)
return(Vector2(base_speed, speed_differance))
## We start at a slower base speed and move upward
## Disabled because flipping accel direction may make more sense.
# if speed_differance > base_speed:
# return(Vector2(base_speed, speed_differance))
# else:
# ## We start at a higher speed and move downward to base
# return(Vector2(speed_differance, base_speed ))
# if inertia:
# return Vector2(0,inertia)
return Vector2(base_speed,base_speed)
func resolve_h_acceleration(_params :Dictionary, _inertia :Vector2, _move_direction :float) -> float:
## TODO: Adjust for jerk, determine if we're currently experiencing accel
## if a speed difference applies
var _acceleration :float = 0.0
var base_speed :float = _params["_base_h_move_speed"]
if _params["_base_h_move_speed_modifier"] != 0:
_acceleration = _params["_base_h_move_acceleration"] + _params["_base_h_move_modifier_move_acceleration"]
var speed_differance = base_speed + _params["_base_h_move_speed_modifier"]
_acceleration = _params["_base_h_move_acceleration"] #+ _params["_base_h_move_modifier_move_acceleration"]
##WIP: Add part where offset acceleration only applies until the inertia equals the offset or whatever
if sign(_params["_base_h_move_modifier_move_acceleration"]) == -1 and abs(_inertia.x) >= speed_differance:
#print("I should add the modifier acceleration maybe?")
_acceleration += _params["_base_h_move_modifier_move_acceleration"]
# else:
# print ("not yet.")
else:
_acceleration = _params["_base_h_move_acceleration"]
##TODO: Add part where offset acceleration only applies until the inertia equals the offset or whatever
#_acceleration *= sign(_move_direction)
## Well this didn't work
#_acceleration = _params["_base_h_move_acceleration"] + _params["_base_h_move_modifier_move_acceleration"]
## If the indented movedirection doesn't match our velocity direction
if _inertia.x != 0.0 and sign(_inertia.x) != sign(_move_direction):
return _acceleration * -1
elif sign(_move_direction) != 0:

View File

@ -12,6 +12,6 @@ name = "roll"
horizontal_speed = 150.0
horizontal_acceleration = 1.36422e-12
horizontal_speed_offset = -140.0
horizontal_speed_offset_acceleration = -50.0
horizontal_speed_offset_acceleration = -300.0
jerk_factor = 0.0
animation_sequence = [ "roll" ]