Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Area3D

Hereda: CollisionObject3D < Node3D < Node < Object

Una región del espacio 3D que detecta otros CollisionObject3D entrando o saliendo de él.

Descripción

Area3D es una región del espacio 3D definida por uno o varios nodos hijo CollisionShape3D o CollisionPolygon3D. Detecta cuándo otros CollisionObject3D entran o salen de ella, y también realiza un seguimiento de qué objetos de colisión aún no han salido (es decir, cuáles la están superponiendo).

Este nodo también puede alterar o sobrescribir parámetros físicos (gravedad, amortiguación) y enrutar el audio a buses de audio personalizados.

Nota: Las áreas y los cuerpos creados con PhysicsServer3D podrían no interactuar como se espera con los Area3D, y podrían no emitir señales ni realizar el seguimiento de objetos correctamente.

Advertencia: Usar un ConcavePolygonShape3D dentro de un hijo CollisionShape3D de este nodo (por ejemplo, creado usando la opción Crear Malla de Contorno... en el menú Malla que aparece al seleccionar un nodo MeshInstance3D) puede dar resultados inesperados, ya que esta forma de colisión es hueca. Si esto no es lo deseado, debe dividirse en múltiples ConvexPolygonShape3D o en formas primitivas como BoxShape3D, o en algunos casos puede reemplazarse por un CollisionPolygon3D.

Tutoriales

Propiedades

float

angular_damp

0.1

SpaceOverride

angular_damp_space_override

0

StringName

audio_bus_name

&"Master"

bool

audio_bus_override

false

float

gravity

9.8

Vector3

gravity_direction

Vector3(0, -1, 0)

bool

gravity_point

false

Vector3

gravity_point_center

Vector3(0, -1, 0)

float

gravity_point_unit_distance

0.0

SpaceOverride

gravity_space_override

0

float

linear_damp

0.1

SpaceOverride

linear_damp_space_override

0

bool

monitorable

true

bool

monitoring

true

int

priority

0

float

reverb_bus_amount

0.0

bool

reverb_bus_enabled

false

StringName

reverb_bus_name

&"Master"

float

reverb_bus_uniformity

0.0

float

wind_attenuation_factor

0.0

float

wind_force_magnitude

0.0

NodePath

wind_source_path

NodePath("")

Métodos

Array[Area3D]

get_overlapping_areas() const

Array[Node3D]

get_overlapping_bodies() const

bool

has_overlapping_areas() const

bool

has_overlapping_bodies() const

bool

overlaps_area(area: Node) const

bool

overlaps_body(body: Node) const


Señales

area_entered(area: Area3D) 🔗

Emitida cuando el area recibido entra en esta área. Requiere que monitoring se configure como true.


area_exited(area: Area3D) 🔗

Emitida cuando el area recibido sale de esta área. Requiere que monitoring se configure como true.


area_shape_entered(area_rid: RID, area: Area3D, area_shape_index: int, local_shape_index: int) 🔗

Emitida cuando una forma (Shape2D) del área externa (area) entra en una forma de ésta área. Requiere que monitoring esté establecido en true.

Los parámetros local_shape_index y area_shape_index contienen los índices de las formas que interactúan de ésta área y del área externa, respectivamente. El parámetro area_rid contiene el RID del área externa. Estos valores pueden utilizarse con PhysicsServer2D.

Ejemplo: Obtener el nodo CollisionShape2D a partir del índice de la forma:

var other_shape_owner = area.shape_find_owner(area_shape_index)
var other_shape_node = area.shape_owner_get_owner(other_shape_owner)

var local_shape_owner = shape_find_owner(local_shape_index)
var local_shape_node = shape_owner_get_owner(local_shape_owner)

area_shape_exited(area_rid: RID, area: Area3D, area_shape_index: int, local_shape_index: int) 🔗

Emitida cuando una Shape3D de la area recibido sale de una forma de esta área. Requiere que monitoring esté establecido en true.

Véase también area_shape_entered.


body_entered(body: Node3D) 🔗

Emitted when the received body enters this area. body can be a PhysicsBody3D, SoftBody3D or GridMap. GridMaps are detected if their MeshLibrary has collision shapes configured. Requires monitoring to be set to true.

Note: Godot Physics does not support reporting overlaps with SoftBody3D, so will not emit this signal in such cases.


body_exited(body: Node3D) 🔗

Emitted when the received body exits this area. body can be a PhysicsBody3D, SoftBody3D or GridMap. GridMaps are detected if their MeshLibrary has collision shapes configured. Requires monitoring to be set to true.

Note: Godot Physics does not support reporting overlaps with SoftBody3D, so will not emit this signal in such cases.


body_shape_entered(body_rid: RID, body: Node3D, body_shape_index: int, local_shape_index: int) 🔗

Emitted when a Shape3D of the received body enters a shape of this area. body can be a PhysicsBody3D, SoftBody3D or GridMap. GridMaps are detected if their MeshLibrary has collision shapes configured. Requires monitoring to be set to true.

local_shape_index and body_shape_index contain indices of the interacting shapes from this area and the interacting body, respectively. body_rid contains the RID of the body. These values can be used with the PhysicsServer3D.

Note: Godot Physics does not support reporting overlaps with SoftBody3D, so will not emit this signal in such cases.

Example: Get the CollisionShape3D node from the shape index:

var body_shape_owner = body.shape_find_owner(body_shape_index)
var body_shape_node = body.shape_owner_get_owner(body_shape_owner)

var local_shape_owner = shape_find_owner(local_shape_index)
var local_shape_node = shape_owner_get_owner(local_shape_owner)

body_shape_exited(body_rid: RID, body: Node3D, body_shape_index: int, local_shape_index: int) 🔗

Emitted when a Shape3D of the received body exits a shape of this area. body can be a PhysicsBody3D, SoftBody3D or GridMap. GridMaps are detected if their MeshLibrary has collision shapes configured. Requires monitoring to be set to true.

See also body_shape_entered.

Note: Godot Physics does not support reporting overlaps with SoftBody3D, so will not emit this signal in such cases.


Enumeraciones

enum SpaceOverride: 🔗

SpaceOverride SPACE_OVERRIDE_DISABLED = 0

Esta área no afecta a la gravedad/amortiguación.

SpaceOverride SPACE_OVERRIDE_COMBINE = 1

Esta área añade sus valores de gravedad/amortiguación a lo que se ha calculado hasta ahora (en el orden priority).

SpaceOverride SPACE_OVERRIDE_COMBINE_REPLACE = 2

Esta área añade sus valores de gravedad/amortiguación a lo que se ha calculado hasta ahora (en el orden priority), ignorando cualquier área de menor prioridad.

SpaceOverride SPACE_OVERRIDE_REPLACE = 3

Esta área reemplaza cualquier gravedad/amortiguación, incluso las predeterminadas, ignorando cualquier área de menor prioridad.

SpaceOverride SPACE_OVERRIDE_REPLACE_COMBINE = 4

Esta área reemplaza cualquier gravedad/amortiguación calculada hasta ahora (en orden de priority), pero sigue calculando el resto de las áreas.


Descripciones de Propiedades

float angular_damp = 0.1 🔗

  • void set_angular_damp(value: float)

  • float get_angular_damp()

La velocidad a la que los objetos dejan de girar en esta área. Representa la velocidad angular perdida por segundo.

Véase ProjectSettings.physics/3d/default_angular_damp para obtener más detalles sobre la amortiguación.


SpaceOverride angular_damp_space_override = 0 🔗

Modo de sobre-escritura para los cálculos de amortiguación angular dentro de esta área.


StringName audio_bus_name = &"Master" 🔗

El nombre del bus de audio del área.


bool audio_bus_override = false 🔗

  • void set_audio_bus_override(value: bool)

  • bool is_overriding_audio_bus()

Si es true, el área del bus de audio sobrescribe el bus de audio por defecto.


float gravity = 9.8 🔗

  • void set_gravity(value: float)

  • float get_gravity()

La intensidad de la gravedad en la zona (en metros por segundo al cuadrado). Este valor multiplica la dirección de la gravedad. Esto es útil para modificar la fuerza de la gravedad sin alterar su dirección.


Vector3 gravity_direction = Vector3(0, -1, 0) 🔗

  • void set_gravity_direction(value: Vector3)

  • Vector3 get_gravity_direction()

El vector de gravedad del área (no normalizado).


bool gravity_point = false 🔗

  • void set_gravity_is_point(value: bool)

  • bool is_gravity_a_point()

Si es true, la gravedad se calcula a partir de un punto (establecido mediante gravity_point_center). Véase también gravity_space_override.


Vector3 gravity_point_center = Vector3(0, -1, 0) 🔗

  • void set_gravity_point_center(value: Vector3)

  • Vector3 get_gravity_point_center()

Si la gravedad es un punto (ver gravity_point), este será el punto de atracción.


float gravity_point_unit_distance = 0.0 🔗

  • void set_gravity_point_unit_distance(value: float)

  • float get_gravity_point_unit_distance()

La distancia a la que la fuerza de gravedad es igual a gravity. Por ejemplo, en un planeta de 100 metros de radio con una gravedad superficial de 4.0 m/s², establezca la gravity a 4.0 y la unidad de distancia a 100.0. La gravedad disminuirá según la ley del cuadrado inverso, entonces en este ejemplo, a 200 metros del centro la gravedad será 1.0 m/s² (doble de distancia, 1/4 más gravedad), a 50 metros será 16.0 m/s² (mitad de distancia, 4 veces más gravedad), y así sucesivamente.

Lo anterior es cierto solo cuando la unidad de distancia es un número positivo. Cuando está establecido a 0.0, la gravedad será constante independientemente de la distancia.


SpaceOverride gravity_space_override = 0 🔗

Modo de sobrescritura para los cálculos de gravedad dentro de esta área.


float linear_damp = 0.1 🔗

  • void set_linear_damp(value: float)

  • float get_linear_damp()

La tasa a la que los objetos dejan de moverse en esta área. Representa la velocidad lineal perdida por segundo.

Véase ProjectSettings.physics/3d/default_linear_damp para obtener más detalles sobre la amortiguación.


SpaceOverride linear_damp_space_override = 0 🔗

Modo de sobre-escritura para cálculos de amortiguación lineal dentro de esta área.


bool monitorable = true 🔗

  • void set_monitorable(value: bool)

  • bool is_monitorable()

Si es true, otras áreas de monitoreo pueden detectar esta área.


bool monitoring = true 🔗

  • void set_monitoring(value: bool)

  • bool is_monitoring()

Si es true, el área detecta cuerpos o áreas que entran y salen de ella.


int priority = 0 🔗

  • void set_priority(value: int)

  • int get_priority()

La prioridad del área. Las áreas de mayor prioridad se procesan primero. La física de World3D siempre se procesa al final, después de todas las áreas.


float reverb_bus_amount = 0.0 🔗

  • void set_reverb_amount(value: float)

  • float get_reverb_amount()

El grado en que esta área aplica reverberación a su audio asociado. Va de 0 a 1 con una precisión de 0.1.


bool reverb_bus_enabled = false 🔗

  • void set_use_reverb_bus(value: bool)

  • bool is_using_reverb_bus()

Si es true, el área aplica reverberación a su audio asociado.


StringName reverb_bus_name = &"Master" 🔗

El nombre del bus de reverberación que se utilizará para el audio asociado a esta área.


float reverb_bus_uniformity = 0.0 🔗

  • void set_reverb_uniformity(value: float)

  • float get_reverb_uniformity()

El grado de reverberación de esta área es un efecto uniforme. Va de 0 a 1 con una precisión de 0,1.


float wind_attenuation_factor = 0.0 🔗

  • void set_wind_attenuation_factor(value: float)

  • float get_wind_attenuation_factor()

La tasa exponencial a la que la fuerza del viento disminuye con la distancia desde su origen.

Nota: Esta fuerza del viento solo se aplica a los nodos SoftBody3D. Otros cuerpos físicos no se ven afectados actualmente por el viento.


float wind_force_magnitude = 0.0 🔗

  • void set_wind_force_magnitude(value: float)

  • float get_wind_force_magnitude()

La magnitud de la fuerza del viento específica del área.

Nota: Esta fuerza del viento solo se aplica a los nodos SoftBody3D. Otros cuerpos físicos no se ven afectados actualmente por el viento.


NodePath wind_source_path = NodePath("") 🔗

El Node3D que se utiliza para especificar la dirección y el origen de una fuerza del viento específica del área. La dirección es opuesta al eje z de la transformación local del Node3D, y su origen es el origen de la transformación local del Node3D.

Nota: Esta fuerza del viento solo se aplica a los nodos SoftBody3D. Otros cuerpos físicos no se ven afectados actualmente por el viento.


Descripciones de Métodos

Array[Area3D] get_overlapping_areas() const 🔗

Devuelve una lista de Area3D que se intersecan. El CollisionObject3D.collision_layer del área superpuesta debe formar parte del CollisionObject3D.collision_mask de esta área para que se detecte.

Por razones de rendimiento (todas las colisiones se procesan al mismo tiempo), esta lista se modifica una vez durante el paso de física, no inmediatamente después de que se muevan los objetos. Considera usar señales en su lugar.


Array[Node3D] get_overlapping_bodies() const 🔗

Returns a list of intersecting PhysicsBody3Ds, SoftBody3Ds, and GridMaps. The overlapping body's CollisionObject3D.collision_layer must be part of this area's CollisionObject3D.collision_mask in order to be detected.

For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.

Note: Godot Physics does not support reporting overlaps with SoftBody3D, so will not return any such bodies.


bool has_overlapping_areas() const 🔗

Devuelve true si interseca alguna Area3D, de lo contrario devuelve false. El CollisionObject3D.collision_layer del área superpuesta debe ser parte del CollisionObject3D.collision_mask de esta área para que se detecte.

Por razones de rendimiento (todas las colisiones se procesan al mismo tiempo), la lista de áreas superpuestas se modifica una vez durante el paso de física, no inmediatamente después de que se mueven los objetos. Considera usar señales en su lugar.


bool has_overlapping_bodies() const 🔗

Returns true if intersecting any PhysicsBody3Ds, SoftBody3Ds, or GridMaps, otherwise returns false. The overlapping body's CollisionObject3D.collision_layer must be part of this area's CollisionObject3D.collision_mask in order to be detected.

For performance reasons (collisions are all processed at the same time) the list of overlapping bodies is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.

Note: Godot Physics does not support reporting overlaps with SoftBody3D, so will not consider such bodies.


bool overlaps_area(area: Node) const 🔗

Devuelve true si el Area3D dado interseca o se superpone con este Area3D, false en caso contrario.

Nota: El resultado de esta prueba no es inmediato después de mover objetos. Por rendimiento, la lista de superposiciones se actualiza una vez por fotograma y antes del paso de física. Considera usar señales en su lugar.


bool overlaps_body(body: Node) const 🔗

Returns true if the given physics body intersects or overlaps this Area3D, false otherwise.

body argument can either be a PhysicsBody3D, SoftBody3D, or a GridMap instance. While GridMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body.

Note: The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.

Note: Godot Physics does not support reporting overlaps with SoftBody3D, so will return false in such cases.