32 lines
902 B
GDScript
32 lines
902 B
GDScript
class_name Ant extends CharacterBody3D
|
|
|
|
@export var damage := 3
|
|
@export var max_health := 10
|
|
@export var speed:float = 5
|
|
|
|
@onready var navigation_agent := ($NavigationAgent3D as NavigationAgent3D)
|
|
@onready var health := max_health
|
|
|
|
func on_interact(object:CollisionObject3D, point:Vector3)->void:
|
|
pass
|
|
|
|
func go_to(target_position:Vector3)->void:
|
|
navigation_agent.target_position = target_position
|
|
|
|
func hit(damage:int) -> void:
|
|
health -= damage
|
|
if health < 0:
|
|
queue_free()
|
|
|
|
func _physics_process(_delta: float) -> void:
|
|
var next_step := navigation_agent.get_next_path_position()
|
|
next_step += Vector3.DOWN * 0.5
|
|
var dir := (next_step-global_position).normalized()
|
|
navigation_agent.set_velocity(dir * speed)
|
|
|
|
func _on_velocity_computed(safe_velocity: Vector3)->void:
|
|
look_at(global_position + (-global_basis.z).lerp(safe_velocity, 0.1))
|
|
|
|
velocity = safe_velocity
|
|
var __ := move_and_slide()
|