En aquest tema, explorarem dos components fonamentals per a la física en Unity: els Rigidbody i els Col·liders. Aquests components són essencials per crear interaccions físiques realistes en els teus jocs.
- Què és un Rigidbody?
Un Rigidbody és un component que permet que un objecte de joc sigui afectat per la física del motor de Unity. Això inclou la gravetat, les forces, els moments i les col·lisions.
Propietats Principals del Rigidbody
- Mass (Massa): Determina la massa de l'objecte. Una massa més gran farà que l'objecte sigui més difícil de moure.
- Drag (Resistència): Controla la resistència de l'objecte al moviment lineal.
- Angular Drag (Resistència Angular): Controla la resistència de l'objecte al moviment rotacional.
- Use Gravity (Usar Gravetat): Si està activat, l'objecte serà afectat per la gravetat.
- Is Kinematic (És Cinemàtic): Si està activat, l'objecte no serà afectat per les forces físiques, però encara pot moure's i col·lisionar amb altres objectes.
Exemple de Codi: Afegint un Rigidbody
using UnityEngine; public class AddRigidbody : MonoBehaviour { void Start() { // Afegir un component Rigidbody a l'objecte de joc Rigidbody rb = gameObject.AddComponent<Rigidbody>(); // Configurar algunes propietats del Rigidbody rb.mass = 2.0f; rb.drag = 0.5f; rb.angularDrag = 0.05f; rb.useGravity = true; } }
- Què és un Col·lider?
Un Col·lider és un component que defineix la forma de l'objecte per a la detecció de col·lisions. Els col·liders poden ser de diverses formes, com ara caixes, esferes, càpsules i malles personalitzades.
Tipus de Col·liders
- Box Collider (Col·lider de Caixa): Una caixa tridimensional.
- Sphere Collider (Col·lider d'Esfera): Una esfera tridimensional.
- Capsule Collider (Col·lider de Càpsula): Una càpsula tridimensional.
- Mesh Collider (Col·lider de Malla): Una malla personalitzada que segueix la forma del model 3D.
Exemple de Codi: Afegint un Col·lider
using UnityEngine; public class AddCollider : MonoBehaviour { void Start() { // Afegir un component Box Collider a l'objecte de joc BoxCollider boxCollider = gameObject.AddComponent<BoxCollider>(); // Configurar algunes propietats del Box Collider boxCollider.size = new Vector3(1.0f, 1.0f, 1.0f); boxCollider.isTrigger = false; } }
- Interacció entre Rigidbody i Col·liders
Quan un objecte té tant un Rigidbody com un Col·lider, pot interactuar amb altres objectes físics en l'escena. El Rigidbody permet que l'objecte sigui afectat per forces físiques, mentre que el Col·lider defineix la seva forma per a la detecció de col·lisions.
Exemple de Codi: Interacció entre Rigidbody i Col·liders
using UnityEngine; public class RigidbodyColliderInteraction : MonoBehaviour { void Start() { // Afegir un component Rigidbody a l'objecte de joc Rigidbody rb = gameObject.AddComponent<Rigidbody>(); // Afegir un component Sphere Collider a l'objecte de joc SphereCollider sphereCollider = gameObject.AddComponent<SphereCollider>(); // Configurar algunes propietats del Rigidbody rb.mass = 1.0f; rb.drag = 0.1f; rb.angularDrag = 0.05f; rb.useGravity = true; // Configurar algunes propietats del Sphere Collider sphereCollider.radius = 0.5f; sphereCollider.isTrigger = false; } }
- Exercicis Pràctics
Exercici 1: Afegir Rigidbody i Col·liders
- Crea un nou projecte de Unity.
- Afegeix un objecte de joc (per exemple, un cub) a l'escena.
- Escriu un script que afegeixi un component Rigidbody i un Box Collider a l'objecte de joc.
- Configura les propietats del Rigidbody i del Box Collider segons les teves preferències.
Solució de l'Exercici 1
using UnityEngine; public class ExerciseSolution : MonoBehaviour { void Start() { // Afegir un component Rigidbody a l'objecte de joc Rigidbody rb = gameObject.AddComponent<Rigidbody>(); // Afegir un component Box Collider a l'objecte de joc BoxCollider boxCollider = gameObject.AddComponent<BoxCollider>(); // Configurar algunes propietats del Rigidbody rb.mass = 1.0f; rb.drag = 0.1f; rb.angularDrag = 0.05f; rb.useGravity = true; // Configurar algunes propietats del Box Collider boxCollider.size = new Vector3(1.0f, 1.0f, 1.0f); boxCollider.isTrigger = false; } }
- Errors Comuns i Consells
Errors Comuns
- Oblidar afegir un Col·lider: Sense un col·lider, l'objecte no podrà detectar col·lisions.
- Configurar incorrectament les propietats del Rigidbody: Ajustar massa, drag o angular drag incorrectament pot fer que l'objecte es comporti de manera estranya.
- No activar Use Gravity: Si vols que l'objecte sigui afectat per la gravetat, assegura't que aquesta opció estigui activada.
Consells
- Experimenta amb les propietats: Prova diferents valors per a les propietats del Rigidbody i del Col·lider per veure com afecten el comportament de l'objecte.
- Utilitza Gizmos: Unity proporciona eines visuals (Gizmos) per veure els col·liders en l'editor, cosa que pot ajudar a ajustar la seva mida i posició.
Conclusió
En aquesta secció, hem après sobre els components Rigidbody i Col·liders, que són essencials per a la física en Unity. Hem vist com afegir i configurar aquests components mitjançant codi i hem practicat amb un exercici pràctic. Amb aquests coneixements, estàs preparat per crear interaccions físiques més realistes en els teus jocs. En la següent secció, explorarem la detecció bàsica de col·lisions.
Curs de Unity
Mòdul 1: Introducció a Unity
- Introducció a Unity i Instal·lació
- Visió General de la Interfície de Unity
- Creant el Teu Primer Projecte
- Objectes de Joc Bàsics i Components
Mòdul 2: Programació Bàsica en Unity
- Introducció a C# per a Unity
- Creant i Adjuntant Scripts
- Entenent MonoBehaviour
- Gestió Bàsica d'Entrades
Mòdul 3: Treballant amb Actius
- Important i Gestionant Actius
- Utilitzant la Botiga d'Actius
- Creant i Utilitzant Prefabs
- Animació Bàsica
Mòdul 4: Física i Col·lisions
- Introducció a la Física de Unity
- Rigidbody i Col·liders
- Detecció Bàsica de Col·lisions
- Utilitzant Materials de Física
Mòdul 5: Interfície d'Usuari (UI)
- Introducció a la UI de Unity
- Creant i Personalitzant Elements de UI
- Gestió d'Esdeveniments de UI
- Creant Menús i HUDs
Mòdul 6: Àudio en Unity
- Introducció a l'Àudio en Unity
- Important i Utilitzant Clips d'Àudio
- Programació Bàsica d'Àudio
- Àudio 3D i So Espacial
Mòdul 7: Programació Avançada
- Conceptes Avançats de C# per a Unity
- Coroutines i Programació Asíncrona
- Objectes Scriptables
- Editors Personalitzats i Gizmos
Mòdul 8: Física Avançada i IA
- Tècniques Avançades de Física
- Pathfinding i Navegació
- Programació Bàsica d'IA
- Màquines d'Estats i Arbres de Comportament
Mòdul 9: Optimització i Rendiment
- Tècniques de Perfilat i Optimització
- Gestió de Memòria
- Reduint Draw Calls
- Optimitzant Física i Col·lisions