Godot Version
4.4.1.stable
Question
Hello, I am trying to create a moving Area3D object that moves randomly between 5 different places aka. “points” from 1-5.
I have put the nodes in an array and that is where my predicament is.
The only thing I would like to know is how to get the x and y positions from the element that currentTarget gets from the array
extends StaticBody3D
@onready var hitbox: Area3D = $Area3D
@onready var point1: Node3D = $HitboxPath/Point1
@onready var point2: Node3D = $HitboxPath/Point2
@onready var point3: Node3D = $HitboxPath/Point3
@onready var point4: Node3D = $HitboxPath/Point4
@onready var point5: Node3D = $HitboxPath/Point5
@onready var timer: Timer = $Timer
var targets = [point1, point2, point3, point4, point5]
var currentTarget
#Select target.
func findTarget():
var randomTarget = randi() % targets.size()
currentTarget = targets[randomTarget]
print(randomTarget)
print(currentTarget)
print(targets)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if timer.is_stopped():
findTarget()
#Move hitbox to target.
if hitbox.position.x != currentTarget.position.x:
hitbox.position.x = lerp(hitbox.position.x, currentTarget.position.x, delta * 1)
if hitbox.position.y != currentTarget.position.y:
hitbox.position.y = lerp(hitbox.position.y, currentTarget.position.y, delta * 1)
else:
timer.start()