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

  1. Afegir un component RigidBody: gameObject.AddComponent<Rigidbody>() afegeix un component RigidBody a l'objecte de joc.
  2. Establir la massa: rb.mass = 5.0f estableix la massa del RigidBody a 5 unitats.
  3. 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ó

  1. Declaració de variables: public float speed defineix la velocitat de moviment. private Rigidbody rb és una referència al component RigidBody.
  2. Inicialització: rb = gameObject.AddComponent<Rigidbody>() afegeix un component RigidBody a l'objecte.
  3. 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.

© Copyright 2024. Tots els drets reservats