lima-city: Webhosting, Domains und Cloud
2 Pluspunkte 0 Minuspunkte
Wie kann ich eine zufällige Position generieren die sich aber innerhalb einer Area3D befinden muss?
von  

1 Antwort

1 Pluspunkt 0 Minuspunkte

Wenn deine Area3D eine Box als CollisionShape benutzt kannst du den AABB Algorythmus benutzen.

extends Area3D

func get_random_position_within_area() -> Vector3:

    var collision_shape = get_node_or_null("CollisionShape3D")
    if collision_shape == null or collision_shape.shape == null:
        push_error("CollisionShape3D oder Shape ist null!")
        return Vector3.ZERO

    var shape = collision_shape.shape
    var aabb: AABB
    var half_extents = (shape as BoxShape3D).size * 0.5
    aabb = AABB(-half_extents, shape.size)

    # Transformiere lokale AABB in den globalen Raum
    var global_position = global_transform.origin
    var global_aabb = AABB(
        global_position + aabb.position,
        aabb.size
    )

    # Generiere eine zufällige Position innerhalb der globalen AABB
    return Vector3(
        randf_range(global_aabb.position.x, global_aabb.position.x + global_aabb.size.x),
        randf_range(global_aabb.position.y, global_aabb.position.y + global_aabb.size.y),
        randf_range(global_aabb.position.z, global_aabb.position.z + global_aabb.size.z)
    )

von (397 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

12 Nutzer