En esta página

Qt Quick Física 3D Formas y cuerpos

Los objetos de la simulación están representados por cualquiera de los cuatro tipos de cuerpos siguientes: StaticRigidBody, DynamicRigidBody, CharacterController y TriggerBody. La forma física de un cuerpo se representa mediante subtipos de CollisionShape.

Formas

Una forma de colisión se utiliza para definir la forma física y la extensión de un objeto a efectos de la simulación física. La forma de colisión suele ser más simple que la apariencia visual del objeto.

Hay algunas formas predefinidas integradas en el motor: BoxShape, CapsuleShape, SphereShape, y PlaneShape. El manejo de estas formas está optimizado, por lo que las simulaciones que las utilizan suelen tener un mejor rendimiento.

Además, hay formas personalizadas que se definen mediante datos: ConvexMeshShape HeightFieldShape y TriangleMeshShape. Estas permiten una mayor flexibilidad a expensas del rendimiento.

Cuerpos

Un body representa un objeto físico en la simulación. Estos cuerpos interactúan y colisionan entre sí. Los dos tipos principales son los cuerpos estáticos (StaticRigidBody) y los cuerpos dinámicos (DynamicRigidBody). La forma física de un cuerpo se especifica mediante una lista de formas. La forma efectiva es la unión de estas formas. La posición relativa de las formas es fija: los cuerpos son rígidos.

Cuerpo dinámico

Los cuerpos dinámicos pueden moverse. La propiedad isKinematic determina cómo se mueven. Cuando isKinematic es true, el cuerpo se posiciona explícitamente modificando las propiedades kinematicPosition y kinematicRotation. Cuando isKinematic es false, el objeto es controlado por la simulación: caerá por gravedad y rebotará en otros objetos.

Cuando isKinematic es true, se permiten todas las formas. Sin embargo, los cuerpos no cinemáticos están más restringidos: sólo se pueden utilizar formas convexas. Estas son las formas predefinidas BoxShape, CapsuleShape, y SphereShape; y la forma personalizada ConvexMeshShape. Esto no significa que sea imposible tener una geometría física no convexa: se pueden combinar varias formas convexas para un único cuerpo. El ejemplo de formas compuestas muestra cómo formar cuerpos anulares a partir de formas convexas.

Cuerpo estático

Los cuerpos estáticos no se mueven. Representan el entorno en el que se mueven los demás cuerpos. Tenga en cuenta que técnicamente es posible mover un cuerpo estático, pero la simulación física se comportará de forma inesperada. En concreto, un cuerpo dinámico que haya entrado en una posición de reposo sobre un cuerpo estático no se despertará si el cuerpo estático se mueve. Esto significa que el cuerpo dinámico permanecerá en la misma posición aunque se mueva el cuerpo estático.

Controlador de caracteres

El tipo CharacterController es un caso especial. Representa a un personaje que se mueve por el entorno. Un caso de uso típico es una vista en primera persona en la que el camera es hijo del controlador de personaje, y su movimiento se controla mediante teclado/ratón o gamepad.

Cuerpo de disparo

También existe el tipo TriggerBody, que es otro caso especial. A diferencia de los otros cuerpos no es un cuerpo físico, lo que significa que no interactúa en colisión con otros cuerpos. Como su nombre indica sólo se utiliza para desencadenar acciones cuando otro cuerpo entra o sale de su volumen definido por sus formas de colisión. Si otro cuerpo tiene sendTriggerReports establecido en true y su volumen de colisión entra en TriggerBody se emite la señal bodyEntered.

La siguiente tabla muestra un resumen de los diferentes tipos de cuerpos, cómo interactúan y cómo se pueden utilizar:

CuerpoInteracciónFormas permitidas
StaticRigidBodyNo se mueveTodas las formas
DynamicRigidBody con isKinematic truePosicionado programáticamente. Influye en los cuerpos dinámicos. No se detiene por nada.Todas las formas
DynamicRigidBody con isKinematic falseTotalmente controlado por simulaciónFormas limitadas
CharacterControllerMovidas programáticamente. Influencia cuerpos dinámicos. Detenido por cuerpos estáticos.Sólo una CapsuleShape
TriggerBodyNingunaTodas las formas

Materiales Físicos

El tipo PhysicsMaterial especifica cómo se comporta un objeto cuando colisiona con otro. Las propiedades dynamicFriction y staticFriction determinan lo resbaladizo que es el objeto, y restitution determina lo rebotón que es.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.