wall kicks can work
This commit is contained in:
parent
1895b3b10b
commit
638495f4a3
5 changed files with 83 additions and 4 deletions
|
@ -7,6 +7,8 @@ extends CharacterBody2D
|
|||
@export var max_run_speed: float
|
||||
@export var turn_acceleration: float
|
||||
@export var stopping_force: float
|
||||
@export var bonk_speed_threshold: float
|
||||
@export var bonk_power: float
|
||||
|
||||
@export_group("Air Movement")
|
||||
@export var gravity: float
|
||||
|
@ -39,6 +41,7 @@ var input_dir: Vector2 = Vector2.ZERO:
|
|||
|
||||
var _last_velocity: Vector2 = Vector2.ZERO
|
||||
var _splat_normal: Vector2 = Vector2.ZERO
|
||||
var _bonk_cancel_velocity: Vector2 = Vector2.ZERO
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
|
@ -94,6 +97,25 @@ func _apply_turn_acceleration(delta: float) -> void:
|
|||
#endregion
|
||||
|
||||
|
||||
#region Bonk
|
||||
func _check_for_bonk(_delta: float) -> void:
|
||||
if absf(velocity.x) >= bonk_speed_threshold:
|
||||
wall_cast.force_shapecast_update()
|
||||
if wall_cast.is_colliding():
|
||||
state_chart.send_event(&"bonked")
|
||||
|
||||
func _enter_bonk() -> void:
|
||||
_bonk_cancel_velocity = velocity * Vector2(-1.0, 1.0) # horizontally inverted velocity
|
||||
velocity = Vector2.ZERO
|
||||
|
||||
func _cancel_bonk() -> void:
|
||||
velocity = _bonk_cancel_velocity
|
||||
|
||||
func _apply_bonk() -> void:
|
||||
velocity.x = signf(_bonk_cancel_velocity.x) * bonk_power
|
||||
#endregion
|
||||
|
||||
|
||||
#region Falling
|
||||
func _apply_gravity(delta: float) -> void:
|
||||
if input_dir.y > 0.0:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue