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.

VehicleBody3D

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

Un corps physique 3D qui simule le comportement d'une voiture.

Description

Ce corps physique implémente toute la logique physique nécessaire pour simuler une voiture. Il est basé sur le système de véhicules à raycast communément présents dans des moteurs de physique. En dehors d'un CollisionShape3D pour le corps principal du véhicule, vous devez également ajouter un nœud VehicleWheel3D pour chaque roue. Vous devriez également ajouter un MeshInstance3D à ce nœud pour le modèle 3D du véhicule, mais ce modèle ne devrait généralement pas inclure de maillages pour les roues. Vous pouvez contrôler le véhicule en utilisant les propriétés brake, engine_force et steering. La position ou l'orientation de ce nœud ne devrait pas être changée directement.

Note : Le vecteur avant local pour ce nœud est Vector3.MODEL_FRONT.

Note : Le point d'origine de votre VehicleBody3D déterminera le centre de gravité de votre véhicule. Pour rendre le véhicule plus proche du sol, le point d'origine est généralement maintenu bas, en déplaçant la CollisionShape3D et le MeshInstance3D vers le haut.

Note : Cette classe a des problèmes connus et n'est pas conçue pour fournir une physique réaliste pour des véhicules 3D. Si vous voulez de la physique avancée des véhicules, vous devrez peut-être écrire votre propre intégration physique en utilisant CharacterBody3D ou RigidBody3D.

Tutoriels

Propriétés

float

brake

0.0

float

engine_force

0.0

float

mass

40.0 (overrides RigidBody3D)

float

steering

0.0


Descriptions des propriétés

float brake = 0.0 🔗

Ralentit le véhicule en appliquant une force de freinage. Le véhicule n'est ralenti que si les roues sont 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 engine_force = 0.0 🔗

  • void set_engine_force(value: float)

  • float get_engine_force()

Accélère le véhicule en appliquant une force moteur. Le véhicule n'est accéléré que si les roues qui ont VehicleWheel3D.use_as_traction défini à true sont 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 du véhicule.


float steering = 0.0 🔗

  • void set_steering(value: float)

  • float get_steering()

L'angle de direction du véhicule. Définir cette valeur à une valeur non nulle entraînera le virage du véhicule lorsqu'il se déplace. Les roues qui ont VehicleWheel3D.use_as_steering défini à true seront automatiquement tournées.

Note : Cette propriété est modifiée en degrés dans l'inspecteur. Dans le code, la propriété est définie en radians.