improve and update ai
This commit was merged in pull request #32.
This commit is contained in:
@@ -4,7 +4,9 @@ class_name State
|
||||
|
||||
@export var state_id: StringName = &""
|
||||
@export var next_state_id: StringName
|
||||
@export var random_next_state_ids: Array[StringName] = []
|
||||
@export var animation_name: String
|
||||
@export var blend_time: float = 0.2
|
||||
@export var exit_on_action_finished: bool
|
||||
@export var exit_on_animation_finished: bool
|
||||
@export var min_wait_time: float = 3.0
|
||||
@@ -47,7 +49,7 @@ func physics_update(_delta: float) -> void:
|
||||
|
||||
func run_animation() -> void:
|
||||
if agent.anim_player and agent.anim_player.has_animation(animation_name):
|
||||
agent.anim_player.play(animation_name)
|
||||
agent.anim_player.play(animation_name, blend_time)
|
||||
|
||||
func _on_animation_finished(anim_name: StringName) -> void:
|
||||
if animation_name == anim_name:
|
||||
@@ -57,7 +59,12 @@ func _on_animation_finished(anim_name: StringName) -> void:
|
||||
var wait_time := randf_range(min_wait_time, max_wait_time)
|
||||
runtime_timer.start(wait_time)
|
||||
else:
|
||||
transitioned.emit(self, next_state_id)
|
||||
transitioned.emit(self, get_next_state())
|
||||
|
||||
func _on_timer_timeout() -> void:
|
||||
transitioned.emit(self, next_state_id)
|
||||
transitioned.emit(self, get_next_state())
|
||||
|
||||
func get_next_state() -> StringName:
|
||||
if random_next_state_ids.size() > 0:
|
||||
return random_next_state_ids.pick_random()
|
||||
return next_state_id
|
||||
|
||||
Reference in New Issue
Block a user