PhysicsBody3D

Hereda: CollisionObject3D < Node3D < Node < Object

Heredado por: CharacterBody3D, PhysicalBone3D, RigidBody3D, StaticBody3D

Clase base abstracta para los objetos de juego 3D afectados por la física.

Descripción

PhysicsBody3D es una clase base abstracta para los objetos de juego 3D afectados por la física. Todos los cuerpos físicos 3D heredan de ella.

Advertencia: Con una escala no uniforme, este nodo probablemente no se comportará como se espera. Se aconseja mantener su escala igual en todos los ejes y ajustar sus formas de colisión en su lugar.

Tutoriales

Propiedades

bool

axis_lock_angular_x

false

bool

axis_lock_angular_y

false

bool

axis_lock_angular_z

false

bool

axis_lock_linear_x

false

bool

axis_lock_linear_y

false

bool

axis_lock_linear_z

false

Métodos

void

add_collision_exception_with(body: Node)

bool

get_axis_lock(axis: BodyAxis) const

Array[PhysicsBody3D]

get_collision_exceptions()

Vector3

get_gravity() const

KinematicCollision3D

move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1)

void

remove_collision_exception_with(body: Node)

void

set_axis_lock(axis: BodyAxis, lock: bool)

bool

test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1)


Descripciones de Propiedades

bool axis_lock_angular_x = false 🔗

Bloquea la rotación del cuerpo en el eje X.


bool axis_lock_angular_y = false 🔗

Bloquea la rotación del cuerpo en el eje Y.


bool axis_lock_angular_z = false 🔗

Bloquea la rotación del cuerpo en el eje Z.


bool axis_lock_linear_x = false 🔗

Bloquear el movimiento lineal del cuerpo en el eje X.


bool axis_lock_linear_y = false 🔗

Bloquear el movimiento lineal del cuerpo en el eje Y.


bool axis_lock_linear_z = false 🔗

Bloquear el movimiento lineal del cuerpo en el eje Z.


Descripciones de Métodos

void add_collision_exception_with(body: Node) 🔗

Añade un cuerpo a la lista de cuerpos con los que este cuerpo no puede colisionar.


bool get_axis_lock(axis: BodyAxis) const 🔗

Devuelve true si el axis lineal o rotacional especificado está bloqueado.


Array[PhysicsBody3D] get_collision_exceptions() 🔗

Devuelve un conjunto de nodos que se añadieron como excepciones de colisión para este cuerpo.


Vector3 get_gravity() const 🔗

Devuelve el vector de gravedad calculado a partir de todas las fuentes que pueden afectar al cuerpo, incluyendo todas las anulaciones de gravedad de los nodos Area3D y la gravedad global del mundo.


KinematicCollision3D move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗

Mueve el cuerpo a lo largo del vector motion. Para que sea independiente de la velocidad de fotogramas en Node._physics_process() o Node._process(), motion debe calcularse utilizando delta.

El cuerpo se detendrá si colisiona. Devuelve un KinematicCollision3D, que contiene información sobre la colisión cuando se detiene, o cuando toca otro cuerpo a lo largo del movimiento.

Si test_only es true, el cuerpo no se mueve pero se da la información de la posible colisión.

safe_margin es el margen extra utilizado para la recuperación de la colisión (ver CharacterBody3D.safe_margin para más detalles).

Si recovery_as_collision es true, cualquier despenetración de la fase de recuperación también se notifica como una colisión; esto es utilizado por ejemplo por CharacterBody3D para mejorar la detección del suelo durante el ajuste al suelo.

max_collisions permite recuperar más de un resultado de colisión.


void remove_collision_exception_with(body: Node) 🔗

Quita un cuerpo de la lista de cuerpos con los que este cuerpo no puede colisionar.


void set_axis_lock(axis: BodyAxis, lock: bool) 🔗

Bloquea o desbloquea el axis lineal o rotacional especificado según el valor de lock.


bool test_move(from: Transform3D, motion: Vector3, collision: KinematicCollision3D = null, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) 🔗

Comprueba las colisiones sin mover el cuerpo. Para que sea independiente de la velocidad de fotogramas en Node._physics_process() o Node._process(), motion debe calcularse utilizando delta.

Establece virtualmente la posición, escala y rotación del nodo a la del Transform3D dado, luego intenta mover el cuerpo a lo largo del vector motion. Devuelve true si una colisión impediría que el cuerpo se moviera a lo largo de todo el trayecto.

collision es un objeto opcional de tipo KinematicCollision3D, que contiene información adicional sobre la colisión cuando se detiene, o cuando toca otro cuerpo a lo largo del movimiento.

safe_margin es el margen extra utilizado para la recuperación de la colisión (ver CharacterBody3D.safe_margin para más detalles).

Si recovery_as_collision es true, cualquier despenetración de la fase de recuperación también se notifica como una colisión; esto es útil para comprobar si el cuerpo tocaría algún otro cuerpo.

max_collisions permite recuperar más de un resultado de colisión.