init
This commit is contained in:
44
player/scripts/state_attack.gd
Normal file
44
player/scripts/state_attack.gd
Normal file
@@ -0,0 +1,44 @@
|
||||
class_name State_Attack extends State
|
||||
|
||||
@onready var walk: State = $"../walk"
|
||||
@onready var idle: State = $"../idle"
|
||||
@onready var animation_player: AnimationPlayer = $"../../AnimationPlayer"
|
||||
@onready var attack_animation_player: AnimationPlayer = $"../../Sprite2D/attack_effect/AnimationPlayer"
|
||||
@onready var audio_player: AudioStreamPlayer2D = $"../../audio/audio"
|
||||
@onready var hurtbox: Hurtbox = %attack_hurtbox
|
||||
@export var attack_sound: AudioStream
|
||||
@export_range(1, 20, 0.5) var decelerate_speed: float = 5.0
|
||||
var attacking: bool = false
|
||||
|
||||
func enter() -> void:
|
||||
animation_player.animation_finished.connect(end_attack)
|
||||
player.update_animation("attack")
|
||||
attack_animation_player.play("attack_" + player.anim_direction())
|
||||
audio_player.stream = attack_sound
|
||||
audio_player.pitch_scale = randf_range(0.9, 1.1)
|
||||
audio_player.play()
|
||||
attacking = true
|
||||
|
||||
await get_tree().create_timer(0.075).timeout
|
||||
if attacking:
|
||||
hurtbox.monitoring = true
|
||||
|
||||
func exit() -> void:
|
||||
animation_player.animation_finished.disconnect(end_attack)
|
||||
attacking = false
|
||||
hurtbox.monitoring = false
|
||||
|
||||
func process(delta : float) -> State:
|
||||
player.velocity -= player.velocity * decelerate_speed * delta
|
||||
if attacking:
|
||||
return null
|
||||
return idle if player.direction == Vector2.ZERO else walk
|
||||
|
||||
func physics(_delta : float) -> State:
|
||||
return null
|
||||
|
||||
func handle_input(_event : InputEvent) -> State:
|
||||
return null
|
||||
|
||||
func end_attack(_new_animation_name: String) -> void:
|
||||
attacking = false
|
||||
Reference in New Issue
Block a user