Objectius del Mòdul
En aquest mòdul, aprendràs els conceptes bàsics de la física en Unity, incloent-hi com utilitzar components com Rigidbody i Colliders per crear interaccions físiques realistes en els teus jocs. Al final d'aquest mòdul, seràs capaç de:
- Entendre els fonaments de la física en Unity.
- Aplicar components de física als objectes de joc.
- Configurar i ajustar les propietats físiques per obtenir el comportament desitjat.
Conceptes Clau
- Rigidbody: Component que permet que un objecte de joc sigui afectat per la física.
- Collider: Component que defineix la forma de l'objecte per a la detecció de col·lisions.
- Forces: Aplicació de forces per moure objectes de joc.
- Gravetat: Configuració de la gravetat per a objectes de joc.
Components de Física en Unity
Rigidbody
El component Rigidbody
és essencial per a qualsevol objecte que necessiti ser afectat per la física, com ara la gravetat o les forces aplicades. A continuació es mostra com afegir un Rigidbody
a un objecte de joc:
using UnityEngine; public class AddRigidbody : MonoBehaviour { void Start() { // Afegir un component Rigidbody a l'objecte de joc Rigidbody rb = gameObject.AddComponent<Rigidbody>(); // Configurar propietats del Rigidbody rb.mass = 1.0f; rb.drag = 0.5f; rb.angularDrag = 0.05f; rb.useGravity = true; } }
Collider
Els Colliders
defineixen la forma de l'objecte per a la detecció de col·lisions. Hi ha diversos tipus de Colliders
disponibles en Unity, com ara BoxCollider
, SphereCollider
, i MeshCollider
. Aquí tens un exemple de com afegir un BoxCollider
:
using UnityEngine; public class AddBoxCollider : MonoBehaviour { void Start() { // Afegir un component BoxCollider a l'objecte de joc BoxCollider boxCollider = gameObject.AddComponent<BoxCollider>(); // Configurar propietats del BoxCollider boxCollider.size = new Vector3(1.0f, 1.0f, 1.0f); } }
Aplicació de Forces
Per moure objectes de joc utilitzant la física, pots aplicar forces al Rigidbody
. Aquí tens un exemple de com aplicar una força cap endavant:
using UnityEngine; public class ApplyForce : MonoBehaviour { public float forceAmount = 10.0f; void Start() { Rigidbody rb = GetComponent<Rigidbody>(); if (rb != null) { // Aplicar una força cap endavant rb.AddForce(transform.forward * forceAmount, ForceMode.Impulse); } } }
Exercicis Pràctics
Exercici 1: Afegir un Rigidbody i un Collider
- Crea un nou projecte en Unity.
- Afegeix un objecte de joc (per exemple, un cub).
- Escriu un script que afegeixi un
Rigidbody
i unBoxCollider
a l'objecte de joc. - Configura les propietats del
Rigidbody
i delBoxCollider
.
Solució:
using UnityEngine; public class SetupPhysics : MonoBehaviour { void Start() { // Afegir Rigidbody Rigidbody rb = gameObject.AddComponent<Rigidbody>(); rb.mass = 1.0f; rb.drag = 0.5f; rb.angularDrag = 0.05f; rb.useGravity = true; // Afegir BoxCollider BoxCollider boxCollider = gameObject.AddComponent<BoxCollider>(); boxCollider.size = new Vector3(1.0f, 1.0f, 1.0f); } }
Exercici 2: Aplicar una Força a un Objecte
- Utilitza el mateix projecte de l'exercici anterior.
- Escriu un script que apliqui una força cap endavant a l'objecte de joc quan comenci el joc.
Solució:
using UnityEngine; public class ApplyForwardForce : MonoBehaviour { public float forceAmount = 10.0f; void Start() { Rigidbody rb = GetComponent<Rigidbody>(); if (rb != null) { rb.AddForce(transform.forward * forceAmount, ForceMode.Impulse); } } }
Errors Comuns i Consells
- Oblidar afegir un Rigidbody: Si un objecte de joc no té un
Rigidbody
, no serà afectat per la física. - Configuració incorrecta del Collider: Assegura't que el
Collider
tingui la mida i la forma correctes per a l'objecte de joc. - Aplicar forces en el moment equivocat: És millor aplicar forces en el mètode
FixedUpdate
per assegurar-se que es sincronitzen amb el motor de física.
Conclusió
En aquest mòdul, has après els fonaments de la física en Unity, incloent-hi com afegir i configurar components Rigidbody
i Collider
, així com aplicar forces als objectes de joc. Aquests conceptes són essencials per crear interaccions físiques realistes en els teus jocs. En el proper mòdul, aprofundirem en l'ús de Rigidbody
i Colliders
per a la detecció 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