Objectius del Mòdul
En aquest mòdul, aprendràs els conceptes fonamentals dels Rigid Bodies (cossos rígids) i com s'utilitzen en la simulació física dins dels videojocs. Al final d'aquest mòdul, hauràs adquirit les habilitats necessàries per implementar i manipular Rigid Bodies en un motor de física.
Què és un Rigid Body?
Un Rigid Body és un objecte que no es deforma sota l'acció de forces. En altres paraules, la distància entre qualsevol parell de punts dins del cos roman constant, independentment de les forces aplicades. Aquesta simplificació permet simular objectes sòlids de manera eficient en entorns de videojocs.
Característiques dels Rigid Bodies
- Massa: La quantitat de matèria que conté el cos.
- Inèrcia: La resistència del cos a canviar el seu estat de moviment.
- Centre de Massa: El punt en el qual es pot considerar que tota la massa del cos està concentrada.
- Velocitat Lineal: La velocitat a la qual es mou el centre de massa del cos.
- Velocitat Angular: La velocitat a la qual el cos rota al voltant del seu centre de massa.
Equacions de Moviment
Les equacions de moviment per a un Rigid Body es poden dividir en dues parts: translació i rotació.
Translació
La translació descriu el moviment del centre de massa del cos. Les equacions de moviment són:
\[ \vec{F} = m \cdot \vec{a} \]
On:
- \(\vec{F}\) és la força aplicada.
- \(m\) és la massa del cos.
- \(\vec{a}\) és l'acceleració del centre de massa.
Rotació
La rotació descriu el moviment al voltant del centre de massa. Les equacions de moviment són:
\[ \vec{\tau} = I \cdot \vec{\alpha} \]
On:
- \(\vec{\tau}\) és el parell de forces (torque) aplicat.
- \(I\) és el moment d'inèrcia.
- \(\vec{\alpha}\) és l'acceleració angular.
Implementació en Motors de Física
Els motors de física com Unity i Unreal Engine proporcionen eines per treballar amb Rigid Bodies. A continuació, es mostra com es poden crear i manipular Rigid Bodies en Unity.
Exemple en Unity
using UnityEngine; public class RigidBodyExample : MonoBehaviour { void Start() { // Afegir un component RigidBody a l'objecte Rigidbody rb = gameObject.AddComponent<Rigidbody>(); // Establir la massa del RigidBody rb.mass = 5.0f; // Aplicar una força al RigidBody rb.AddForce(Vector3.up * 10.0f, ForceMode.Impulse); } }
Explicació del Codi
- Afegir un component RigidBody:
gameObject.AddComponent<Rigidbody>()
afegeix un component RigidBody a l'objecte de joc. - Establir la massa:
rb.mass = 5.0f
estableix la massa del RigidBody a 5 unitats. - Aplicar una força:
rb.AddForce(Vector3.up * 10.0f, ForceMode.Impulse)
aplica una força impulsiva cap amunt al RigidBody.
Exercici Pràctic
Exercici
Crea un script en Unity que faci que un objecte es mogui cap endavant quan es premi la tecla "W". L'objecte ha de tenir un component RigidBody.
Solució
using UnityEngine; public class MoveForward : MonoBehaviour { public float speed = 10.0f; private Rigidbody rb; void Start() { rb = gameObject.AddComponent<Rigidbody>(); } void Update() { if (Input.GetKey(KeyCode.W)) { rb.AddForce(Vector3.forward * speed); } } }
Explicació de la Solució
- Declaració de variables:
public float speed
defineix la velocitat de moviment.private Rigidbody rb
és una referència al component RigidBody. - Inicialització:
rb = gameObject.AddComponent<Rigidbody>()
afegeix un component RigidBody a l'objecte. - Moviment:
if (Input.GetKey(KeyCode.W))
comprova si la tecla "W" està premuda. Si és així,rb.AddForce(Vector3.forward * speed)
aplica una força cap endavant.
Resum
En aquesta secció, hem introduït els conceptes bàsics dels Rigid Bodies, incloent les seves característiques i les equacions de moviment. També hem vist com implementar i manipular Rigid Bodies en Unity amb exemples pràctics. En el següent mòdul, aprofundirem en la simulació de Rigid Bodies i les seves interaccions.
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