AI part two
parent
78a6df0fdf
commit
5a8b173b48
@ -1,29 +1,43 @@
|
||||
class_name Knight extends Player
|
||||
class_name Knight
|
||||
extends Player
|
||||
|
||||
const ATTACK_ANIMS: Array[StringName] = [
|
||||
&"1h_slice_diagonal",
|
||||
&"1h_slice_horizontal",
|
||||
&"1h_attack_chop"
|
||||
]
|
||||
const FOOTSTEP_SOUNDS: Array[String] = [
|
||||
"res://resources/audio/footstep_grass_000.ogg",
|
||||
"res://resources/audio/footstep_grass_001.ogg",
|
||||
"res://resources/audio/footstep_grass_002.ogg",
|
||||
"res://resources/audio/footstep_grass_003.ogg",
|
||||
"res://resources/audio/footstep_grass_004.ogg"
|
||||
]
|
||||
|
||||
var attacks := ["1h_slice_diagonal", "1h_slice_horizontal", "1h_attack_chop"]
|
||||
var footsteps := [
|
||||
"res://resources/audio/footstep_grass_000.ogg",
|
||||
"res://resources/audio/footstep_grass_001.ogg",
|
||||
"res://resources/audio/footstep_grass_002.ogg",
|
||||
"res://resources/audio/footstep_grass_003.ogg",
|
||||
"res://resources/audio/footstep_grass_004.ogg"
|
||||
]
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
# Attack
|
||||
if event.is_action_pressed("attack"):
|
||||
if enough_stamina_available(attack_cost):
|
||||
use_stamina(attack_cost)
|
||||
if state == States.blocking:
|
||||
anim_state.travel("Block_Attack")
|
||||
else:
|
||||
anim_state.travel(attacks.pick_random())
|
||||
|
||||
# Block
|
||||
if Input.is_action_pressed("block"): state = States.blocking
|
||||
if Input.is_action_just_released("block"): state = States.idle
|
||||
anim_tree.set("parameters/conditions/blocking", state == States.blocking)
|
||||
anim_tree.set("parameters/conditions/not_blocking", state != States.blocking)
|
||||
|
||||
_on_attack()
|
||||
# Block + Animator-Zustände
|
||||
_update_block_state()
|
||||
# Calls the _input() from player.gd
|
||||
super._input(event)
|
||||
super._input(event)
|
||||
|
||||
|
||||
func _on_attack() -> void:
|
||||
if not enough_stamina_available(attack_cost):
|
||||
return
|
||||
use_stamina(attack_cost)
|
||||
var target_anim: StringName = &"Block_Attack" if state == States.blocking else ATTACK_ANIMS.pick_random()
|
||||
anim_state.travel(target_anim)
|
||||
|
||||
|
||||
func _update_block_state() -> void:
|
||||
if Input.is_action_pressed("block"):
|
||||
state = States.blocking
|
||||
elif Input.is_action_just_released("block"):
|
||||
state = States.idle
|
||||
var is_blocking: bool = state == States.blocking
|
||||
anim_tree.set("parameters/conditions/blocking", is_blocking)
|
||||
anim_tree.set("parameters/conditions/not_blocking", not is_blocking)
|
||||
|
||||
Loading…
Reference in New Issue