2024-02-22 06:22:22 +11:00
|
|
|
class_name PathingController extends EnemyMovement
|
2023-11-11 19:03:01 +11:00
|
|
|
|
2024-02-22 06:22:22 +11:00
|
|
|
var path: Curve3D
|
|
|
|
var path_progress: float = 0.0
|
2023-11-11 19:03:01 +11:00
|
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
2023-11-28 18:02:40 +11:00
|
|
|
if path:
|
|
|
|
distance_remaining = path.get_baked_length()
|
2023-11-11 19:03:01 +11:00
|
|
|
|
|
|
|
|
|
|
|
func _physics_process(delta: float) -> void:
|
2023-11-28 18:02:40 +11:00
|
|
|
if !path:
|
|
|
|
return
|
2024-02-22 06:22:22 +11:00
|
|
|
var distance_travelled: float = (character.stats.movement_speed * clampf(character.movement_speed_penalty, 0.0, 1.0)) * delta
|
2023-11-11 19:03:01 +11:00
|
|
|
distance_remaining -= distance_travelled
|
|
|
|
path_progress += distance_travelled
|
2024-02-22 06:22:22 +11:00
|
|
|
var sample: Transform3D = path.sample_baked_with_rotation(path_progress, true)
|
2023-11-11 19:03:01 +11:00
|
|
|
character.global_position = sample.origin
|
|
|
|
character.look_at(character.global_position + -sample.basis.z)
|