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...
PhysicsDirectSpaceState3D
Hérite de : Object
Hérité par : PhysicsDirectSpaceState3DExtension
Fournit un accès direct à un espace physique dans le PhysicsServer3D.
Description
Fournit un accès direct à un espace physique dans le PhysicsServer3D. Il est utilisé principalement pour faire des requêtes sur des objets et des zones résidant dans un espace donné.
Note : Cette classe n'est pas destinée à être instanciée directement. Utilisez World3D.direct_space_state pour obtenir l'état de l'espace 3D physique du monde.
Tutoriels
Méthodes
cast_motion(parameters: PhysicsShapeQueryParameters3D) |
|
collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) |
|
get_rest_info(parameters: PhysicsShapeQueryParameters3D) |
|
intersect_point(parameters: PhysicsPointQueryParameters3D, max_results: int = 32) |
|
intersect_ray(parameters: PhysicsRayQueryParameters3D) |
|
intersect_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) |
Descriptions des méthodes
PackedFloat32Array cast_motion(parameters: PhysicsShapeQueryParameters3D) 🔗
Vérifie jusqu'où un Shape3D peut se déplacer sans entrer en collision. Tous les paramètres de la requête, y compris la forme et le mouvement, sont fournis par un objet PhysicsShapeQueryParameters3D.
Renvoie un tableau avec les proportions sûres et dangereuses (entre 0 et 1) du mouvement. La proportion sûre est la fraction maximale du mouvement qui peut être effectué sans collision. La proportion dangereuse est la fraction minimale de la distance dont l'objet doit se déplacer pour entrer en collision. Si aucune collision n'est détectée, un résultat de [1.0, 1.0] sera renvoyé.
Note : Toute Shape3D avec laquelle la forme est déjà en collision, par exemple à l'intérieur, sera ignorée. Utilisez collide_shape() pour déterminer les Shape3Ds avec lesquelles la forme est déjà en collision.
Array[Vector3] collide_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) 🔗
Vérifie les intersections d'une forme, donné par un objet PhysicsShapeQueryParameters3D, contre l'espace. Le tableau résultant contient une liste de points où la forme intersecte avec une autre. Comme avec intersect_shape(), le nombre de résultats renvoyés peut être limité pour gagner du temps de traitement.
Les points renvoyés sont une liste de paires de points de contact. Pour chaque paire, le premier est dans la forme passée dans l'objet PhysicsShapeQueryParameters3D, le second est dans la forme en collision de l'espace physique.
Note : Cette méthode ne tient pas compte de la propriété motion de l'objet.
Dictionary get_rest_info(parameters: PhysicsShapeQueryParameters3D) 🔗
Vérifie les intersections d'une forme, donnée avec un objet PhysicsShapeQueryParameters3D, contre l'espace. Si elle entre en collision avec plus d'une forme, la plus proche est sélectionnée. L'objet renvoyé est un dictionnaire contenant les champs suivants :
collider_id : L'identifiant de l'objet en collision.
linear_velocity : La vitesse de l'objet en collision en tant que Vector3. Si l'objet est une Area3D, le résultat est (0, 0, 0).
normal : La normale de collision de la forme de la requête au point d'intersection, pointant hors de l'objet en intersection.
point : Le point d'intersection.
rid : Le RID de l’objet en intersection.
shape : L'indice de forme de la forme en collision.
Si la forme n'intersecte rien, alors un dictionnaire vide est renvoyé à la place.
Note : Cette méthode ne tient pas compte de la propriété motion de l'objet.
Array[Dictionary] intersect_point(parameters: PhysicsPointQueryParameters3D, max_results: int = 32) 🔗
Vérifie si un point est à l'intérieur d'au moins une forme solide. La position et les autres paramètres sont définis par PhysicsPointQueryParameters3D. Les formes dans lesquelles se trouve le point sont renvoyées dans un tableau contenant des dictionnaires avec les champs suivants :
collider : L'objet en collision.
collider_id : L'ID de l'objet en collision.
rid : Le RID de l'objet en intersection.
shape : L'indice de forme de la forme en collision.
Le nombre d'intersections peut être limité avec le paramètre max_results, pour réduire le temps de traitement.
Dictionary intersect_ray(parameters: PhysicsRayQueryParameters3D) 🔗
Intersecte un rayon dans un espace donné. La position du rayon et les autres paramètres sont définis par PhysicsRayQueryParameters3D. L'objet renvoyé est un dictionnaire avec les champs suivants :
collider : L'objet en collision.
collider_id : L'ID de l'objet en collision.
normal : La normale de surface de l'objet au point d'intersection, ou Vector3(0, 0, 0) si le rayon commence à l'intérieur de la forme et PhysicsRayQueryParameters3D.hit_from_inside vaut true.
position : Le point intersectant.
face_index : L'index de face au point d'intersection.
Note : Renvoie un nombre valide seulement si la forme intersectée est un ConcavePolygonShape3D. Sinon, -1 est renvoyé.
rid : Le RID de l'objet intersectant.
shape : L'indice de forme de la forme en collision.
Si le rayon n'a rien intersecté, un dictionnaire vide est renvoyé à la place.
Array[Dictionary] intersect_shape(parameters: PhysicsShapeQueryParameters3D, max_results: int = 32) 🔗
Vérifie les intersections d'une forme, données avec un objet PhysicsShapeQueryParameters3D, contre l'espace. Les formes intersectées sont renvoyées dans un tableau contenant des dictionnaires avec les champs suivants :
collider : L'objet en collision.
collider_id : L'ID de l'objet en collision.
rid : Le RID de l'objet en intersection.
shape : L'indice de forme de la forme en collision.
Le nombre d'intersections peut être limité avec le paramètre max_results, pour réduire le temps de traitement.
Note : Cette méthode ne tient pas compte de la propriété motion de l'objet.