Godot Version
4.3
Question
extends CharacterBody3D
@onready var pathf = $“…”
const SPEED = 3
@onready var navigationagent = $NavigationAgent3D
var target: Vector3
var gravity = ProjectSettings.get_setting(“physics/3d/default_gravity”)
func _ready() → void:
_random_way()
func _physics_process(delta) → void:
await get_tree().create_timer(0.01).timeout
# Add the gravity.
if not is_on_floor():
velocity.y -= gravity * delta
var destination = navigationagent.get_next_path_position()
var local_destination = destination - global_position
var direction = local_destination.normalized()
velocity = direction * SPEED
move_and_slide()
func _random_way():
# Define an array of marker positions
var markers = [
get_node(“…/…/Targets/Marker3D”).global_position,
get_node(“…/…/Targets/Marker3D2”).global_position,
get_node(“…/…/Targets/Marker3D3”).global_position,
get_node(“…/…/Targets/Marker3D4”).global_position
]
# Randomly select a target from the markers array
# Случайным образом выбираем цель из массива маркеров
var target = markers[randi_range(0, markers.size() - 1)]
# Устанавливаем цель для агента навигации
navigationagent.set_target_position(target)
func _on_navigation_agent_3d_target_reached():
print(“f”)
_random_way().