Chelimbalo/players/player/states/falling.gd
2025-12-17 00:03:57 +05:00

38 lines
1 KiB
GDScript

extends State
@export var player: Player
@export var player_movement: PlayerMovement
@export var player_input: PlayerInput
@export var max_speed: float = 5.0
@export var acceleration: float
@export var weapon_system: WeaponSystem
@export var damage_curve: Curve
@export var sound_threshold: float
@export var land_sound: MultiplayerAudio3D
func _enter() -> void:
pass
func _exit() -> void:
pass
func physics_update(delta: float) -> void:
if not is_multiplayer_authority():
return
if player.is_on_floor():
if player_input.compressed_states & PlayerInput.CROUCH:
transition.emit("Crouch")
elif player_input.compressed_states & PlayerInput.WALK:
transition.emit("Walk")
else:
transition.emit("Stand")
var speed: float = -player.previous_velocity.y
player.take_damage(int(damage_curve.sample(speed)))
if speed > sound_threshold:
land_sound.multiplayer_play()
player.velocity += player.get_gravity() * delta
player_movement.process_movement(max_speed * weapon_system.get_speed_modifier(),acceleration,0,delta)