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
Rigidbodyi unBoxCollidera l'objecte de joc. - Configura les propietats del
Rigidbodyi 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
Collidertingui 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
FixedUpdateper 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
