Godot Version
4.3
Question
Hi,
I have my script where I place 2 different objects randomly on a path3d.
I also want to rotate randomly how the object is placed, therefore I use:
var random_rotation_x = randf_range(0, PI * 2) # Roteer tussen 0 en 360 graden
var random_rotation_y = randf_range(0, PI * 2) # Roteer tussen 0 en 360 graden
fence_instance.rotation_degrees.x = random_rotation_x
fence_instance.rotation_degrees.y = random_rotation_y
But it is not rotating. All the objects are placed the same.
Can someone help how to use this? Here the whole script:
@tool
extends Path3D
@export var fence_scene1 = preload("res://fence.tscn")
@export var fence_scene2 = preload("res://fence2.tscn")
@export var spacing = 0.2
func _ready():
# Zorg ervoor dat de node "VisibleItems" bestaat
if !$VisibleItems3:
var visible_items = Node3D.new()
visible_items.name = "VisibleItems3"
add_child(visible_items)
spawn_fences()
func spawn_fences():
# Verwijder bestaande hekken van "VisibleItems"
for child in $VisibleItems3.get_children():
child.queue_free()
var current_distance = 0.0
while current_distance < curve.get_baked_length():
var pos = curve.sample_baked(current_distance)
var up_vector = curve.sample_baked_up_vector(current_distance)
# Maak een nieuw hek, willekeurig gekozen tussen fence_scene1 en fence_scene2
var fence_instance
if randf() < 0.5:
fence_instance = fence_scene1.instantiate()
else:
fence_instance = fence_scene2.instantiate()
# Willekeurig roteren op de x- en y-as
var random_rotation_x = randf_range(0, PI * 2) # Roteer tussen 0 en 360 graden
var random_rotation_y = randf_range(0, PI * 2) # Roteer tussen 0 en 360 graden
fence_instance.rotation_degrees.x = random_rotation_x
fence_instance.rotation_degrees.y = random_rotation_y
fence_instance.global_transform.origin = pos
fence_instance.look_at(pos + curve.sample_baked_up_vector(current_distance), up_vector)
$VisibleItems3.add_child(fence_instance)
# Verhoog de afstand met 0.2 meter
current_distance += spacing