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...
VehicleWheel3D
Hérite de : Node3D < Node < Object
Un corps physique 3D pour un VehicleBody3D qui simule le comportement d'une roue.
Description
Un nœud utilisé comme enfant d'un VehicleBody3D parent pour simuler le comportement d'une de ses roues. Ce nœud agit également comme une forme de collision pour détecter si la roue touche une surface.
Note : Cette classe a des problèmes connus et n'est pas conçue pour fournir une physique réaliste des véhicules 3D. Si vous voulez de la physique avancée pour des véhicules, vous pouvez avoir besoin d'écrire votre propre intégration physique en utilisant une autre classe PhysicsBody3D.
Tutoriels
Propriétés
|
||
|
||
|
||
|
||
physics_interpolation_mode |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Méthodes
get_contact_body() const |
|
get_contact_normal() const |
|
get_contact_point() const |
|
get_rpm() const |
|
get_skidinfo() const |
|
is_in_contact() const |
Descriptions des propriétés
Ralentit la roue en appliquant une force de freinage. La roue n'est ralentie que si elle est en contact avec une surface. La force que vous devez appliquer pour ralentir adéquatement votre véhicule dépend de la masse RigidBody3D.mass du véhicule. Pour un véhicule dont la masse est fixée à 1000, essayez une valeur dans l'intervalle 25-30 pour un freinage dur.
float damping_compression = 0.83 🔗
L'amortissement appliqué au ressort de suspension lorsqu'il se compresse, ce qui signifie que la roue monte par rapport au véhicule. Il est mesuré en newton-secondes par millimètre (N⋅s/mm), ou mégagrammes par seconde (Mg/s). Cette valeur devrait être entre 0.0 (pas d'amortissement) et 1.0, mais peut être plus. Une valeur de 0.0 signifie que la voiture continuera de rebondir car le ressort conserve son énergie. Une bonne valeur pour ceci est d'environ 0.3 pour une voiture normale, 0.5 pour une voiture de course.
float damping_relaxation = 0.88 🔗
L'amortissement appliqué au ressort de suspension lorsqu'il rebondit ou s'étend, ce qui signifie que la roue descend par rapport au véhicule. Il est mesuré en newton-secondes par millimètre (N⋅s/mm), ou mégagrammes par seconde (Mg/s). Cette valeur devrait être entre 0.0 (pas d'amortissement) et 1.0, mais peut être plus. Cette valeur devrait toujours être légèrement supérieure à la propriété damping_compression. Pour une valeur damping_compression de 0.3, essayez une valeur de relaxation de 0.5.
Accélère la roue en appliquant une force moteur. La roue n'est accélérée que si elle est en contact avec une surface. La masse RigidBody3D.mass du véhicule a un effet sur l'accélération du véhicule. Pour un véhicule avec une masse de 1000, essayez une valeur dans l'intervalle 25-50 pour l'accélération.
Note : La simulation ne prend pas en compte l'effet des rapports de vitesse, vous devrez ajouter de la logique pour cela si vous souhaitez simuler des rapports de vitesse.
Une valeur négative entraînera la marche arrière de la roue.
L'angle de direction de la roue, en radians. Définir cette valeur à une valeur non nulle fera tourner le véhicule quand il se déplace.
float suspension_max_force = 6000.0 🔗
La force maximale à laquelle le ressort peut résister. Cette valeur devrait être supérieure à un quart de la masse RigidBody3D.mass du VehicleBody3D ou sinon le ressort ne portera pas le poids du véhicule. Les bons résultats sont souvent obtenus avec une valeur d'environ 3× à 4× ce nombre.
float suspension_stiffness = 5.88 🔗
La rigidité de la suspension, en Newtons par millimètre (N/mm), ou mégagrammes par seconde carrée. Utilisez une valeur inférieure à 50 pour une voiture tout terrain, une valeur entre 50 et 100 pour une voiture de course et essayez quelque chose autour de 200 pour quelque chose comme une voiture de Formule 1.
float suspension_travel = 0.2 🔗
Il s'agit de la distance que la suspension peut parcourir. Comme les unités de Godot sont équivalentes aux mètres, gardez ce paramètre relativement bas. Essayez une valeur entre 0,1 et 0,3 selon le type de voiture.
bool use_as_steering = false 🔗
Si true, cette roue sera tournée lorsque la voiture tourne. Cette valeur est utilisée en conjonction avec VehicleBody3D.steering et ignorée si vous utilisez plutôt la valeur steering par roue.
bool use_as_traction = false 🔗
Si true, cette roue transfère la force du moteur au sol pour propulser le véhicule vers l'avant. Cette valeur est utilisée en conjonction avec VehicleBody3D.engine_force et est ignorée si vous utilisez plutôt la valeur par roue engine_force.
float wheel_friction_slip = 10.5 🔗
Cela détermine combien d'adhérence possède cette roue. Elle est combiné avec le paramètre de friction de la surface avec laquelle la roue est en contact. 0.0 signifie pas d'adhérence, 1.0 est l'adhérence normale. Pour une configuration de voiture de dérapage, essayez de définir l'adhérence des roues arrière légèrement plus bas que celle des roues avant, ou utilisez une valeur inférieure pour simuler l'usure du pneu.
Il est préférable de définir cela à 1.0 au début.
La rayon de la roue en mètres.
float wheel_rest_length = 0.15 🔗
Il s'agit de la distance en mètres de laquelle la roue est abaissée de son point d'origine. Ne définissez pas ceci à 0.0 et déplacez la roue à la position, déplacez plutôt le point d'origine de votre roue (le manipulateur dans Godot) à la position que la roue prendra lorsque la suspension est au minimum, puis utilisez la longueur de repos pour déplacer la roue vers le bas à la position à laquelle elle devrait être lorsque la voiture est au repos.
float wheel_roll_influence = 0.1 🔗
Cette valeur affecte la roulade de votre véhicule. Si défini à 1.0 pour toutes les roues, votre véhicule résistera aux roulades, tandis qu'une valeur de 0.0 provoquera des roulades.
Descriptions des méthodes
Node3D get_contact_body() const 🔗
Renvoie le nœud du corps en contact si valide dans l'arbre, en tant que Node3D. Pour le moment, GridMap n'est pas supporté de sorte que le nœud sera toujours de type PhysicsBody3D.
Renvoie null si la roue n'est pas en contact avec une surface, ou si le corps en contact n'est pas un PhysicsBody3D.
Vector3 get_contact_normal() const 🔗
Renvoie la normale de la collision de la suspension dans l'espace global si la roue est en contact. Si la roue n'est pas en contact avec quoi que ce soit, renvoie un vecteur pointant directement le long de l'axe de suspension vers le véhicule dans l'espace global.
Vector3 get_contact_point() const 🔗
Renvoie le point de la collision de la suspension dans l'espace global si la roue est en contact. Si la roue n'est pas en contact avec quoi que ce soit, renvoie le point maximal du raycast de la roue dans l'espace global, défini par wheel_rest_length + wheel_radius.
Renvoie la vitesse de rotation de la roue en tours par minute.
Renvoie une valeur entre 0.0 et 1.0 qui indique si cette roue dérape. 0.0 est le dérapage (la roue a perdu l'adhérence, p.ex. sur terrain glacé), 1.0 signifie pas de dérapage (la roue a pleine adhérence, p.ex. sur route en asphalte sèche).
Renvoie true si cette roue est en contact avec une surface.