VehicleBody3D

Hereda: RigidBody3D < PhysicsBody3D < CollisionObject3D < Node3D < Node < Object

Un cuerpo de física 3D que simula el comportamiento de un automóvil.

Descripción

Este cuerpo físico implementa toda la lógica física necesaria para simular un automóvil. Se basa en el sistema de vehículos de raycast que se encuentra comúnmente en los motores de física. Además de un CollisionShape3D para el cuerpo principal del vehículo, también debes agregar un nodo VehicleWheel3D para cada rueda. También debes agregar un MeshInstance3D a este nodo para el modelo 3D del vehículo, pero este modelo generalmente no debe incluir mallas para las ruedas. Puedes controlar el vehículo usando las propiedades brake, engine_force y steering. La posición u orientación de este nodo no debe cambiarse directamente.

Nota: El frente local para este nodo es Vector3.MODEL_FRONT.

Nota: El punto de origen de tu VehicleBody3D determinará el centro de gravedad de tu vehículo. Para hacer que el vehículo esté más conectado a tierra, el punto de origen generalmente se mantiene bajo, moviendo el CollisionShape3D y el MeshInstance3D hacia arriba.

Nota: Esta clase tiene problemas conocidos y no está diseñada para proporcionar una física de vehículos 3D realista. Si deseas una física de vehículos avanzada, es posible que tengas que escribir tu propia integración de física utilizando CharacterBody3D o RigidBody3D.

Tutoriales

Propiedades

float

brake

0.0

float

engine_force

0.0

float

mass

40.0 (overrides RigidBody3D)

float

steering

0.0


Descripciones de Propiedades

float brake = 0.0 🔗

Disminuye la velocidad del vehículo aplicando una fuerza de frenado. El vehículo solo se ralentiza si las ruedas están en contacto con una superficie. La fuerza que necesitas aplicar para ralentizar adecuadamente tu vehículo depende de la RigidBody3D.mass del vehículo. Para un vehículo con una masa establecida en 1000, prueba un valor en el rango de 25 a 30 para un frenado brusco.


float engine_force = 0.0 🔗

  • void set_engine_force(value: float)

  • float get_engine_force()

Acelera el vehículo aplicando una fuerza del motor. El vehículo solo se acelera si las ruedas que tienen VehicleWheel3D.use_as_traction establecido en true están en contacto con una superficie. La RigidBody3D.mass del vehículo tiene un efecto en la aceleración del vehículo. Para un vehículo con una masa establecida en 1000, prueba un valor en el rango de 25 a 50 para la aceleración.

Nota: La simulación no tiene en cuenta el efecto de los engranajes, tendrás que añadir lógica para esto si deseas simular engranajes.

Un valor negativo hará que el vehículo retroceda.


float steering = 0.0 🔗

  • void set_steering(value: float)

  • float get_steering()

El ángulo de dirección del vehículo. Establecer este valor a uno distinto de cero hará que el vehículo gire cuando se esté moviendo. Las ruedas que tienen VehicleWheel3D.use_as_steering establecido a true se rotarán automáticamente.

Nota: Esta propiedad se edita en el inspector en grados. En el código, la propiedad se establece en radianes.