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.
Checking the stable version of the documentation...
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
|
||
|
||
|
||
|
||
|
||
|
Méthodes
void |
add_collision_exception_with(body: Node) |
get_axis_lock(axis: BodyAxis) const |
|
get_gravity() const |
|
move_and_collide(motion: Vector3, test_only: bool = false, safe_margin: float = 0.001, recovery_as_collision: bool = false, max_collisions: int = 1) |
|
void |
|
void |
set_axis_lock(axis: BodyAxis, 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) |
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.
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.