Added slowdown after attack by tween
This commit is contained in:
@@ -17,15 +17,24 @@ extends CharacterBody2D
|
|||||||
@export_range(0.0, 2.0) var gravity_factor_slide := 0.1
|
@export_range(0.0, 2.0) var gravity_factor_slide := 0.1
|
||||||
@export_range(0.0, 1.0) var gravity_factor_passive_jump := 0.5
|
@export_range(0.0, 1.0) var gravity_factor_passive_jump := 0.5
|
||||||
|
|
||||||
|
@export_group("Attack slow down", "slow_down")
|
||||||
|
@export_range(0.0, 1000.0) var slow_down_attack := 0.05
|
||||||
|
@export_range(0.0, 1000.0) var slow_down_sustain := 0.70
|
||||||
|
@export_range(0.0, 1000.0) var slow_down_release := 0.25
|
||||||
|
|
||||||
|
|
||||||
|
var _slow_down_tween: Tween
|
||||||
|
|
||||||
|
|
||||||
@onready var state_machine : StateMachine = $StateMachine
|
@onready var state_machine : StateMachine = $StateMachine
|
||||||
|
|
||||||
@onready var jump_buffer_timer : Timer = $JumpBufferTimer
|
@onready var jump_buffer_timer : Timer = $JumpBufferTimer
|
||||||
@onready var coyote_time_timer : Timer = $CoyoteTimeTimer
|
@onready var coyote_time_timer : Timer = $CoyoteTimeTimer
|
||||||
@onready var attack_cooldown_timer : Timer = $AttackCooldownTimer
|
@onready var attack_cooldown_timer : Timer = $AttackCooldownTimer
|
||||||
@onready var attack_slowdown_timer : Timer = $AttackSlowdownTimer
|
|
||||||
@onready var slide_delay_timer : Timer = $SlideDelayTimer
|
@onready var slide_delay_timer : Timer = $SlideDelayTimer
|
||||||
|
|
||||||
|
@onready var _max_speed := movement_max_speed_normal
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
state_machine.init()
|
state_machine.init()
|
||||||
@@ -57,13 +66,7 @@ func _physics_process(delta: float) -> void:
|
|||||||
|
|
||||||
var direction := Input.get_axis("move_left", "move_right")
|
var direction := Input.get_axis("move_left", "move_right")
|
||||||
if direction:
|
if direction:
|
||||||
var max_speed : float
|
velocity.x = move_toward(velocity.x, direction * _max_speed, movement_acceleration * delta)
|
||||||
if attack_slowdown_timer.is_stopped():
|
|
||||||
max_speed = movement_max_speed_normal
|
|
||||||
else:
|
|
||||||
max_speed = movement_max_speed_after_attack
|
|
||||||
|
|
||||||
velocity.x = move_toward(velocity.x, direction * max_speed, movement_acceleration * delta)
|
|
||||||
else:
|
else:
|
||||||
velocity.x = move_toward(velocity.x, 0, movement_acceleration * delta)
|
velocity.x = move_toward(velocity.x, 0, movement_acceleration * delta)
|
||||||
|
|
||||||
@@ -72,6 +75,13 @@ func _physics_process(delta: float) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
if event.is_action_pressed("attack") and attack_cooldown_timer.is_stopped():
|
if event.is_action_pressed("attack"):
|
||||||
attack_cooldown_timer.start()
|
if not _slow_down_tween or not _slow_down_tween.is_running():
|
||||||
print("Attack")
|
print("Attack")
|
||||||
|
_slow_down_tween = create_tween()
|
||||||
|
_slow_down_tween.tween_property(self, "_max_speed", \
|
||||||
|
movement_max_speed_after_attack, slow_down_attack)
|
||||||
|
_slow_down_tween.tween_property(self, "_max_speed", \
|
||||||
|
movement_max_speed_after_attack, slow_down_sustain)
|
||||||
|
_slow_down_tween.tween_property(self, "_max_speed", \
|
||||||
|
movement_max_speed_normal, slow_down_release)
|
||||||
|
|||||||
@@ -34,10 +34,6 @@ one_shot = true
|
|||||||
process_callback = 0
|
process_callback = 0
|
||||||
wait_time = 0.75
|
wait_time = 0.75
|
||||||
|
|
||||||
[node name="AttackSlowdownTimer" type="Timer" parent="." unique_id=1617625946]
|
|
||||||
process_callback = 0
|
|
||||||
one_shot = true
|
|
||||||
|
|
||||||
[node name="SlideDelayTimer" type="Timer" parent="." unique_id=1746851787]
|
[node name="SlideDelayTimer" type="Timer" parent="." unique_id=1746851787]
|
||||||
process_callback = 0
|
process_callback = 0
|
||||||
wait_time = 0.75
|
wait_time = 0.75
|
||||||
|
|||||||
Reference in New Issue
Block a user