This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold incluye una versión modificada del motor de física Box2D (versión 2.2.1) para simulaciones de física 2D y el motor de física Bullet (versión 2.77) para física 3D. Permite simular interacciones de física newtoniana entre diferentes tipos de objetos de colisión. Este manual explica cómo funciona.
Los conceptos principales de los motores de física usados en Defold son:
Además de los propios objetos de colisión, también puedes definir constraints de objetos de colisión, conocidos más comúnmente como joints, para conectar dos objetos de colisión y limitar o aplicar fuerza de otras maneras, así como influir en cómo se comportan en la simulación de física. Aprende más sobre joints.
También puedes sondear y leer el mundo de física a lo largo de un rayo lineal conocido como ray cast. Aprende más sobre ray casts.
El motor de física simula física newtoniana y está diseñado para funcionar bien con unidades de metros, kilogramos y segundos (MKS). Además, el motor de física está ajustado para funcionar bien con objetos en movimiento de un tamaño en el rango de 0.1 a 10 metros (los objetos estáticos pueden ser más grandes) y, por defecto, el motor trata 1 unidad (píxel) como 1 metro. Esta conversión entre píxeles y metros es conveniente a nivel de simulación, pero desde la perspectiva de creación de juegos no es muy útil. Con la configuración por defecto, una forma de colisión con un tamaño de 200 píxeles se trataría como si tuviera un tamaño de 200 metros, lo cual está muy fuera del rango recomendado, al menos para un objeto en movimiento.
En general, es necesario escalar la simulación de física para que funcione bien con el tamaño típico de los objetos en un juego. La escala de la simulación de física se puede cambiar en game.project mediante la configuración de escala de física. Establecer este valor, por ejemplo, en 0.02 significaría que 200 píxeles se tratarían como 4 metros. Ten en cuenta que la gravedad (que también se cambia en game.project) debe aumentarse para adaptarse al cambio de escala.
Se recomienda actualizar el motor de física a intervalos regulares para asegurar una simulación estable (en lugar de actualizarlo a intervalos posiblemente irregulares y dependientes de la tasa de fotogramas). Puedes usar una actualización fija para física marcando la configuración Use Fixed Timestep de la sección Physics en el archivo game.project. La frecuencia de actualización se controla mediante la configuración Fixed Update Frequency de la sección Engine en el archivo game.project. Al usar un timestep fijo para física, también se recomienda usar la función de ciclo de vida fixed_update(self, dt) para interactuar con los objetos de colisión de tu juego, por ejemplo al aplicarles fuerzas.