Cómo configurar la colisión de un vehículo en Sollumz
La colisión de un vehículo de GTA V es un Bound Composite dentro del .yft, con una forma de colisión por cada pieza funcional, cada una siguiendo a un bone. En Sollumz un bound funciona cuando se cumplen dos cosas: el bone tiene Fragment Physics activado y el objeto bound sigue a ese bone mediante un constraint. Un vehículo exportado sin bounds atraviesa el mapa.
¿Dónde está la colisión de un vehículo?
Un vehículo no tiene un archivo de colisión aparte. Su colisión forma parte del fragment, junto al modelo visible:
mycar Armature, Sollumz type: Fragment (bones = the car's parts)
mycar.mesh Empty, Sollumz type: Drawable
chassis Mesh, Drawable Model (skinned to the bone "chassis")
bodyshell Mesh, Drawable Model
door_dside_f Mesh, Drawable Model
wheel_lf Mesh, Drawable Model, "Is Wheel Mesh" on
...
mycar.col Empty, Sollumz type: Bound Composite
chassis.col Bound Geometry, follows the bone "chassis"
wheel_lf.col Bound Disc, follows the bone "wheel_lf"
door_dside_f.col Bound Geometry, follows the bone "door_dside_f"
...
El Bound Composite es un contenedor. Las formas que cuelgan de él hacen el trabajo, y cada una pertenece a un bone, así que la colisión de una puerta gira con la puerta y la colisión de una rueda está donde está la rueda. Para verlas mientras trabajas, usa Sollumz Tools > General > View > Show Collisions.
¿Qué tipo de bound va en cada pieza?
Añade formas en Sollumz Tools > Collisions > Create Bounds con Create Bound y el menú de tipo que tiene al lado. Los vehículos originales usan un bound por pieza funcional, nunca una sola forma unida para todo el coche.
| Pieza | Tipo de Sollumz | Forma |
|---|---|---|
Carrocería (chassis) | Bound Geometry | Un casco cerrado y simple alrededor de la carrocería. |
| Cada rueda | Bound Disc | Un disco del tamaño del neumático. |
| Puertas, capó, maletero, parachoques | Bound Geometry | Un casco alrededor de cada pieza. |
| Ventanas | Bound Geometry | Una forma fina sobre el cristal, con un material de colisión de cristal. |
| Bloques simples | Bound Box, Bound Sphere, Bound Capsule, Bound Cylinder | Se dimensionan con los valores del panel Shape del bound. |
El comienzo correcto más rápido es copiar los bounds del vehículo original que importaste como referencia. Una copia conserva el tipo, el material y la masa. Después sustituye la malla de cada casco por una que encaje con tu pieza. La malla del casco se escribe relativa a su bone, así que constrúyela con la pieza en la posición del bone.
¿Cómo enlazo un bound a un bone?
Son dos pasos, y un bound al que le falte cualquiera de los dos no hace nada.
- Activa la física del bone. Selecciona el bone, abre Properties > Bone > Sollumz y marca Fragment Physics. El panel muestra entonces los ajustes de esa pieza: resistencia, salud de daño y las opciones de cristal para las ventanas.
- Haz que el bound siga al bone. El objeto bound necesita un constraint Copy Transforms cuyo objetivo sea el armature y cuyo bone sea el bone de la pieza. Sollumz Tools > Drawables > Bone Tools > Add Bone Constraint lo añade con los ajustes correctos; después eliges el bone en el constraint. Las versiones antiguas de Sollumz usaban para esto un constraint Child Of, que dejó de funcionar después de Blender 4.2.
Cuando un bone tiene la física activada pero nada lo sigue, la exportación avisa: "Bone has physics enabled, but no associated collision! A collision must be linked to the bone for physics to work." El caso contrario también importa: un bone que quedó con la física activada después de borrar su bound debe desactivarse.
El constraint además coloca el bound. Deja el bound en su propio origen y deja que el constraint lo lleve hasta el bone, para que lo siga cuando muevas el bone más adelante.
¿Qué materiales usan los bounds?
Los bounds solo aceptan materiales de colisión. Deciden el sonido, las chispas y el comportamiento de las balas en la superficie. Elige uno en Sollumz Tools > Collisions > Create Collision Material y pulsa Create Collision Material. Para la carrocería de un coche el habitual es Car Metal; también están Car Plastic y los materiales Car Glass para las ventanas.
Nunca dejes un material de render normal en un bound. En uno de nuestros coches, un material visible en el bound de una rueda bastó para que la exportación fallara.
¿Cómo se ajusta la masa?
Cada bound tiene su propia masa, que se muestra en el objeto bound, y las masas se suman para dar el peso del modelo. Sollumz Tools > Fragments > Set Mass escribe un valor en todos los objetos seleccionados. Copiar los bounds de un vehículo original parecido da cifras razonables desde el principio.
La masa también fija el centro de gravedad. Cuando añadimos a un coche bounds auxiliares de 200 kg cada uno, le movieron el centro de masa y cambiaron cómo se conducía. Los bounds extra que solo están para colisionar deberían pesar alrededor de 1 kg. La masa que usa la física de conducción sigue siendo fMass en handling.meta.
¿Los bounds de un vehículo necesitan flags de colisión?
Cada bound tiene un panel Composite Flags con dos filas de interruptores: qué es la forma y con qué colisiona. En los vehículos originales que hemos abierto, están vacíos en los bounds del vehículo, y eso es normal. Los bounds de vehículo no necesitan los flags de mapa.
Los objetos de mapa y los props son distintos. Ahí, un bound sin flags se exporta sin ningún aviso y no colisiona con nada en el juego. Para esos, aplica un preset de flags a cada bound; Sollumz trae uno llamado General (Default). Si pasas de props a vehículos y al revés, no lleves la regla de unos a otros.
¿Por qué mi vehículo atraviesa el mapa?
| Síntoma | Causa | Solución |
|---|---|---|
| Atraviesa la carretera nada más hacer spawn | El fragment no tiene Bound Composite, o no se exportó | Añade los bounds como hijos del armature y exporta con el armature seleccionado. |
| Se apoya sobre la panza, con las ruedas dentro del suelo | No hay bounds de rueda, o no siguen a los bones de las ruedas | Un Bound Disc por cada bone de rueda, del tamaño del neumático. |
| La exportación avisa de un bone sin colisión | Fragment Physics está activado pero ningún bound sigue al bone | Añade el constraint, o desactiva la física de ese bone. |
| La colisión está desplazada respecto al modelo | El bound se movió a mano y también por el constraint | Restablece la posición propia del bound y deja que el constraint lo coloque. |
| Los jugadores atraviesan una pieza | Esa pieza no tiene un bound propio | Añade un bound en el bone de esa pieza. |
| El coche va con el morro hacia abajo o vuelca | Unos bounds extra pesados movieron el centro de masa | Baja su masa. |
Si el modelo está bien y lo único que falla es la altura de marcha, eso es suspensión, no colisión: consulta la solución de problemas de vehículos.
¿Cómo compruebo la colisión antes de probar en el juego?
Exporta una vez con CW XML marcado en Target Formats y abre el .yft.xml en un editor de texto. En la sección de física, la lista de grupos debería nombrar cada bone al que diste física, y la lista de hijos debería tener una entrada por bound. Si faltan los grupos, ningún bone tenía Fragment Physics activado.
El resto del proceso del modelo está en cómo hacer un vehículo de FiveM en Blender con Sollumz.
Preguntas frecuentes
- ¿Por qué mi coche atraviesa el mapa en FiveM?
- El .yft no tiene colisión. En Sollumz el vehículo necesita un Bound Composite con bounds bajo el armature, cada bound siguiendo a un bone que tenga Fragment Physics activado.
- ¿Cómo añado colisión a un vehículo en Sollumz?
- Crea los bounds en Sollumz Tools > Collisions > Create Bounds, marca Fragment Physics en el bone de cada pieza y añade un constraint de bone a cada bound con Bone Tools > Add Bone Constraint.
- ¿Qué tipo de bound usan las ruedas?
- Un Bound Disc en cada bone de rueda, del tamaño del neumático.
- ¿Los bounds de un vehículo necesitan flags de colisión en Sollumz?
- En los vehículos originales que hemos abierto, los flags de los bounds de vehículo están vacíos, y eso es normal. Los objetos de mapa y los props sí necesitan flags en cada bound.
- ¿Qué significa "Bone has physics enabled, but no associated collision"?
- Un bone tiene Fragment Physics activado pero ningún bound lo sigue. Añade a ese bone un bound con un constraint de bone, o desactiva la física del bone.
Fuentes
Productos de esta guía
Todas las guías
- Cómo instalar un resource FiveM de Cfx.re Escrow (Granted Assets)
- Cómo añadir un vehículo custom a un servidor ESX, QBCore o QBox
- ¿Qué son los LODs en los vehículos de FiveM?
- Cómo añadir un vehículo add-on a un servidor FiveM
- vehicles.meta explicado, campo por campo
- handling.meta explicado: campos, unidades y flags
- carvariations.meta y carcols.meta explicados
- vehiclelayouts.meta explicado: asientos, puntos de entrada y animaciones
- Referencia de data_file de fxmanifest para vehículos
- Archivos de modelo del vehículo (yft, _hi.yft, ytd) y el aviso de assets sobredimensionados
- Solución de problemas de vehículos add-on en FiveM: causas y soluciones
- Cómo arreglar "You lack the required entitlement" en un servidor FiveM
- Cómo convertir un mod de coche de un jugador de GTA 5 en un add-on de FiveM
- Cómo funciona un hoverboard de FiveM sin script
- Cómo hacer un vehículo de FiveM en Blender con Sollumz 2.9
- Cómo optimizar un vehículo de FiveM: polígonos, LOD y presupuesto de texturas
- Comprar vehículos FiveM: qué revisar antes de pagar
- Packs de coches FiveM vs vehículos sueltos
- Coches de marcas reales en FiveM: ¿se permiten?
- CodeWalker vs Sollumz: ¿qué herramienta usar para vehículos de FiveM?
