41 lines
753 B
GDScript
41 lines
753 B
GDScript
extends AbstractPlayerState
|
|
|
|
|
|
const PARTICLE_FACTOR = 100.0
|
|
|
|
|
|
enum Direction {
|
|
Left,
|
|
Right,
|
|
}
|
|
|
|
|
|
@export var direction := Direction.Left
|
|
|
|
@export var idle : AbstractPlayerState
|
|
@export var jump : AbstractPlayerState
|
|
|
|
@export var particles : GPUParticles2D
|
|
|
|
|
|
func enter() -> void:
|
|
particles.emitting = true
|
|
match direction:
|
|
Direction.Left:
|
|
player.player_sprite.play(ANIMATION_WALL_LEFT)
|
|
Direction.Right:
|
|
player.player_sprite.play(ANIMATION_WALL_RIGHT)
|
|
|
|
|
|
func exit() -> void:
|
|
particles.emitting = false
|
|
|
|
|
|
func physics_process(_delta: float) -> void:
|
|
particles.amount_ratio = clampf(player.velocity.y / PARTICLE_FACTOR, 0.0, 1.0)
|
|
|
|
if player.is_on_floor():
|
|
switch_state.emit(idle)
|
|
elif not player.is_on_wall():
|
|
switch_state.emit(jump)
|