Skip to content
Snippets Groups Projects

Dash

Merged Jack Kolm requested to merge player-dash into main
Files
6
+ 53
0
extends Node
class_name DashHandler
const INITIAL_BOOST : float = 1.0
const DASH_ACCEL_BOOST : float = 10.0
const DASH_SPEED_BOOST : float = 10.0
const DASH_ACCEL_DENY : float = 12.0
const DASH_SPEED_DENY : float = 12.0
const AIR_DASH_ACCEL_DENY : float = 8.0
const AIR_DASH_SPEED_DENY : float = 8.0
@onready var player : Player = get_parent()
@onready var dash_timeout : Timer = $DashTimeout
@onready var dash_timer : Timer = $DashTimer
var is_dashing : bool = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
player.floor_max_speed_lerp_factor = 10.0
#pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(delta: float) -> void:
if player.is_on_floor():
player.accel = lerp(player.accel, player.BASE_ACCEL, delta*DASH_ACCEL_DENY)
player.max_speed = lerp(player.max_speed, player.BASE_MAX_SPEED, delta*DASH_SPEED_DENY)
else:
player.accel = lerp(player.accel, player.BASE_ACCEL, delta*AIR_DASH_ACCEL_DENY)
player.max_speed = lerp(player.max_speed, player.BASE_MAX_SPEED, delta*AIR_DASH_SPEED_DENY)
func handle_dash(event : InputEvent) -> void:
#if not jumping and jump_attempt:
if event.is_pressed() and not event.is_echo() and dash_timeout.is_stopped(): # and not player.control_dir.is_zero_approx(): # uncomment to make dash only happen when pressing a movement direction
is_dashing = true
player.reset_velocity()
if player.control_dir.is_zero_approx():
player.velocity.x = player.facing_dir.x * INITIAL_BOOST
player.velocity.z = player.facing_dir.z * INITIAL_BOOST
else:
player.velocity.x = player.control_dir.x * INITIAL_BOOST
player.velocity.z = player.control_dir.z * INITIAL_BOOST
player.accel = player.BASE_ACCEL * DASH_ACCEL_BOOST
player.max_speed = player.BASE_MAX_SPEED * DASH_SPEED_BOOST
dash_timer.start()
dash_timeout.start()
func _on_dash_timer_timeout() -> void:
is_dashing = false
Loading