En aquest tema, explorarem les interaccions entre rigid bodies (cossos rígids) en el context de la física de videojocs. Els cossos rígids són objectes que no es deformen sota l'acció de forces, i les seves interaccions són fonamentals per simular un entorn de joc realista. Aprendrem com es comporten aquests cossos quan col·lisionen, com es poden modelar les forces i els moments que actuen sobre ells, i com implementar aquestes interaccions en un motor de física.
Conceptes Clau
-
Cossos Rígids (Rigid Bodies):
- Definició: Objectes que no es deformen sota l'acció de forces.
- Propietats: Massa, inèrcia, velocitat, moment angular.
-
Forces i Moments:
- Forces: Accions que poden canviar l'estat de moviment d'un cos rígid.
- Moments (o torques): Forces que poden causar rotació.
-
Col·lisions:
- Tipus de col·lisions: Elàstiques i inelàstiques.
- Resposta a col·lisions: Canvi de velocitat i rotació després de l'impacte.
-
Fricció i Rebot:
- Fricció: Resistència al moviment entre superfícies en contacte.
- Coeficient de rebot: Mesura de com es conserva l'energia cinètica després d'una col·lisió.
Forces i Moments
Forces
Les forces són vectors que poden causar translació d'un cos rígid. Les forces es poden aplicar en diferents punts del cos, i la seva magnitud i direcció determinaran l'efecte sobre el moviment del cos.
Exemples de Forces
- Gravetat: Una força constant que actua cap avall sobre tots els cossos.
- Força Normal: La força perpendicular a la superfície de contacte que impedeix que els cossos es penetrin.
- Força d'Impuls: Una força aplicada durant un curt període de temps, com un cop o una explosió.
Moments (Torques)
Els moments són vectors que causen rotació d'un cos rígid. Un moment es genera quan una força s'aplica a una certa distància del centre de massa del cos.
Fórmula del Moment
\[ \tau = r \times F \]
On:
- \( \tau \) és el moment.
- \( r \) és el vector de posició des del centre de massa fins al punt d'aplicació de la força.
- \( F \) és la força aplicada.
Col·lisions
Tipus de Col·lisions
- Elàstiques: Les col·lisions en què es conserva l'energia cinètica.
- Inelàstiques: Les col·lisions en què part de l'energia cinètica es converteix en altres formes d'energia, com calor o deformació.
Resposta a Col·lisions
Quan dos cossos rígids col·lisionen, es produeixen canvis en les seves velocitats i moments angulars. La resposta a la col·lisió depèn de les propietats dels cossos i de la naturalesa de la col·lisió.
Fórmules de Col·lisió
Per a una col·lisió elàstica entre dos cossos, les velocitats després de la col·lisió es poden calcular utilitzant les següents fórmules:
\[ v_{1f} = \frac{(m_1 - m_2)v_{1i} + 2m_2v_{2i}}{m_1 + m_2} \] \[ v_{2f} = \frac{(m_2 - m_1)v_{2i} + 2m_1v_{1i}}{m_1 + m_2} \]
On:
- \( v_{1f} \) i \( v_{2f} \) són les velocitats finals dels cossos 1 i 2.
- \( v_{1i} \) i \( v_{2i} \) són les velocitats inicials dels cossos 1 i 2.
- \( m_1 \) i \( m_2 \) són les masses dels cossos 1 i 2.
Fricció i Rebot
Fricció
La fricció és la força que s'oposa al moviment relatiu entre dues superfícies en contacte. Es pot dividir en dos tipus:
- Fricció estàtica: La força que impedeix el moviment inicial.
- Fricció cinètica: La força que s'oposa al moviment continuat.
Fórmula de la Fricció
\[ F_f = \mu F_n \]
On:
- \( F_f \) és la força de fricció.
- \( \mu \) és el coeficient de fricció.
- \( F_n \) és la força normal.
Coeficient de Rebot
El coeficient de rebot (\( e \)) mesura la quantitat d'energia cinètica conservada després d'una col·lisió. Es defineix com la relació entre les velocitats relatives després i abans de la col·lisió.
Fórmula del Coeficient de Rebot
\[ e = \frac{v_{2f} - v_{1f}}{v_{1i} - v_{2i}} \]
Implementació en Motors de Física
Exemple en Unity
A continuació, es mostra un exemple de com implementar interaccions entre cossos rígids en Unity utilitzant el component Rigidbody
.
using UnityEngine; public class RigidBodyInteraction : MonoBehaviour { public Rigidbody rb1; public Rigidbody rb2; void Start() { // Aplicar una força inicial a rb1 rb1.AddForce(new Vector3(10, 0, 0), ForceMode.Impulse); } void OnCollisionEnter(Collision collision) { if (collision.gameObject == rb2.gameObject) { // Calcular la resposta a la col·lisió Vector3 relativeVelocity = rb1.velocity - rb2.velocity; float e = 0.8f; // Coeficient de rebot Vector3 impulse = (1 + e) * relativeVelocity / (1 / rb1.mass + 1 / rb2.mass); rb1.velocity -= impulse / rb1.mass; rb2.velocity += impulse / rb2.mass; } } }
Explicació del Codi
- Inicialització: Es defineixen dos cossos rígids (
rb1
irb2
) i s'aplica una força inicial arb1
. - Detecció de Col·lisió: Quan
rb1
col·lisiona ambrb2
, es calcula la velocitat relativa entre els dos cossos. - Resposta a la Col·lisió: S'utilitza el coeficient de rebot per calcular l'impuls i ajustar les velocitats dels cossos després de la col·lisió.
Exercici Pràctic
Exercici
Implementa un sistema en Unity on tres cossos rígids col·lisionen entre ells i es comporten segons les lleis de la física. Utilitza diferents coeficients de fricció i rebot per observar com afecten les interaccions.
Solució
- Crear els cossos rígids: Afegeix tres objectes amb components
Rigidbody
a l'escena. - Aplicar forces inicials: Utilitza el mètode
AddForce
per aplicar forces inicials als cossos. - Detectar col·lisions: Implementa el mètode
OnCollisionEnter
per gestionar les col·lisions entre els cossos. - Ajustar les propietats de fricció i rebot: Modifica els coeficients de fricció i rebot per veure com canvien les interaccions.
Resum
En aquesta secció, hem explorat les interaccions entre cossos rígids, incloent-hi les forces, moments, col·lisions, fricció i rebot. Hem vist com implementar aquestes interaccions en un motor de física com Unity i hem proporcionat un exercici pràctic per reforçar els conceptes apresos. Aquest coneixement és fonamental per crear simulacions físiques realistes en videojocs.
Física de Videojocs
Mòdul 1: Introducció a la Física en Videojocs
Mòdul 2: Cinemàtica i Dinàmica
- Moviment Rectilini Uniforme (MRU)
- Moviment Rectilini Uniformement Accelerat (MRUA)
- Lleis de Newton
- Moviment Circular
Mòdul 3: Col·lisions i Respostes
Mòdul 4: Física de Rigid Bodies
- Introducció a Rigid Bodies
- Simulació de Rigid Bodies
- Interaccions entre Rigid Bodies
- Constraints i Joints