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.

PhysicsBody3D

Hérite de : CollisionObject3D < Node3D < Node < Object

Hérité par : CharacterBody3D, PhysicalBone3D, RigidBody3D, StaticBody3D

Classe de base abstraite pour les objets du jeu 3D affectés par la physique.

Description

PhysicsBody3D est une classe de base abstraite pour les objets de jeu 3D affectés par la physique. Tous les corps physiques 3D en héritent.

Attention : Avec une échelle non uniforme, ce nœud ne se comportera probablement pas comme prévu. Il est conseillé de garder la même échelle sur tous les axes et d'ajuster sa forme de collision à la place.

Tutoriels

Propriétés

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éthodes

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)


Descriptions des propriétés

bool axis_lock_angular_x = false 🔗

Verrouillez la rotation du corps dans l’axe X.


bool axis_lock_angular_y = false 🔗

Verrouillez la rotation du corps dans l’axe Y.


bool axis_lock_angular_z = false 🔗

Verrouillez la rotation du corps dans l’axe Z.


bool axis_lock_linear_x = false 🔗

Verrouille le mouvement linéaire du corps sur l'axe X.


bool axis_lock_linear_y = false 🔗

Verrouille le mouvement linéaire du corps sur l'axe Y.


bool axis_lock_linear_z = false 🔗

Verrouille le mouvement linéaire du corps sur l'axe Z.


Descriptions des méthodes

void add_collision_exception_with(body: Node) 🔗

Ajoute un corps à la liste des corps avec lesquels ce corps ne peut entrer en collision.


bool get_axis_lock(axis: BodyAxis) const 🔗

Renvoie true si l'axe linéaire ou de rotation spécifié (axis) est verrouillé.


Array[PhysicsBody3D] get_collision_exceptions() 🔗

Renvoie un tableau de nœuds qui ont été ajoutés comme exceptions de collision pour ce corps.


Vector3 get_gravity() const 🔗

Renvoie le vecteur de gravité calculé à partir de toutes les sources qui peuvent affecter le corps, y compris toutes les redéfinitions de gravité des nœuds Area3D et la gravité du monde globale.


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

Déplace le corps le long du vecteur de mouvement motion. Afin d'être indépendant du taux de rafraichissement dans Node._physics_process() ou Node._process(), motion doit être calculé en utilisant delta.

Le corps s'arrêtera s'il entre en collision. Renvoie un KinematicCollision3D, qui contient des informations sur la collision lorsque le corps est arrêté, ou lorsqu'il touche un autre corps durant le mouvement.

Si test_only vaut true, le corps ne se déplace pas, mais les informations de collision potentielles sont données.

safe_margin est la marge supplémentaire utilisée pour le redressement de collision (voir CharacterBody3D.safe_margin pour plus de détails).

Si recovery_as_collision vaut true, toute dépénétration de la phase de redressement est également signalée comme une collision, c'est utilisé par ex. par CharacterBody3D pour améliorer la détection du sol lors de l’aimantation au sol.

max_collisions permet de récupérer plus d'un résultat de collision.


void remove_collision_exception_with(body: Node) 🔗

Retire un corps de la liste des corps avec lesquels ce corps ne peut entrer en collision.


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

Verrouille ou déverrouille l'axe linéaire ou de rotation axis spécifié en fonction de la valeur 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) 🔗

Vérifie les collisions sans déplacer le corps. Afin d'être indépendant du taux de rafraichissement dans Node._physics_process() ou Node._process(), motion devrait être calculé en utilisant delta.

Définit virtuellement la position, l'échelle et la rotation du nœud à celle de la Transform3D donnée, puis tente de déplacer le corps le long du vecteur motion. Renvoie true si une collision empêcherait le corps de se déplacer sur tout le chemin.

collision est un objet optionnel de type KinematicCollision3D, qui contient des informations supplémentaires sur la collision lorsqu'il est arrêté, ou lorsqu'il touche un autre corps le long du mouvement.

safe_margin est la marge supplémentaire utilisée pour le redressement de collision (voir CharacterBody3D.safe_margin pour plus de détails).

Si recovery_as_collision est true, toute dépénétration lors de la phase de redressement est également signalée comme une collision, cela est utile pour vérifier si le corps toucherait n'importe quel autre corps.

max_collisions permet de récupérer plus d'un résultat de collision.