2025-04-16 17:20:33 -06:00
|
|
|
class_name GrunkBeast extends CharacterBody3D
|
|
|
|
## Grunk beast controller
|
|
|
|
|
|
|
|
@export var base_speed := 1.0
|
|
|
|
|
|
|
|
var gravity: Vector3 = (
|
|
|
|
ProjectSettings.get_setting("physics/3d/default_gravity")
|
|
|
|
* ProjectSettings.get_setting("physics/3d/default_gravity_vector")
|
|
|
|
)
|
|
|
|
|
|
|
|
@onready var nav_agent: NavigationAgent3D = %NavAgent
|
|
|
|
|
|
|
|
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
|
|
var path_pos := nav_agent.get_next_path_position()
|
|
|
|
|
|
|
|
var relative_pos := path_pos - global_position
|
|
|
|
var motion := relative_pos.normalized() * base_speed * delta
|
|
|
|
velocity.x = motion.x
|
|
|
|
velocity.z = motion.z
|
|
|
|
|
|
|
|
if not is_on_floor():
|
|
|
|
velocity += gravity * delta
|
|
|
|
|
|
|
|
move_and_slide()
|
|
|
|
|
|
|
|
|
|
|
|
func track_player() -> void:
|
|
|
|
if Player.instance:
|
|
|
|
nav_agent.target_position = Player.instance.global_position
|