Càmera, Fons i So¶
Càmera principal¶
En un projecte 2D, la càmera és ortogràfica (sense perspectiva).
Configuració bàsica¶
Seleccionar Main Camera a la Hierarchy → Inspector:
| Propietat | Descripció |
|---|---|
| Projection | Orthographic (per defecte en 2D). |
| Size | Mida de la càmera (meitat de l'alçada visible en unitats). Un valor més petit = més zoom. |
| Position Z | Ha de ser negativa (ex: -10) perquè la càmera estigui "davant" dels objectes. |
Càmera follow¶
Per fer que la càmera segueixi el jugador:
public class CameraFollow : MonoBehaviour
{
public Transform player;
void LateUpdate()
{
if (player != null)
{
transform.position = new Vector3(
player.position.x,
transform.position.y, // Mantenir l'alçada de la càmera
transform.position.z // Mantenir la Z (-10)
);
}
}
}
LateUpdate
El follow de càmera es fa a LateUpdate per assegurar que el jugador ja s'ha mogut (a Update o FixedUpdate) abans que la càmera actualitzi la seva posició. Això evita tremolors (jitter).
Accedir a la càmera des de qualsevol script¶
Camera cam = Camera.main; // Referència a la càmera amb el tag "MainCamera"
Backgrounds (fons)¶
Importar i configurar¶
- Importar la imatge del fons a
Assets/Sprites. - Crear un GameObject amb Sprite Renderer i assignar-li la imatge.
- Posicionar-lo darrere dels altres elements (Z positiva o Order in Layer baix).
Order in Layer per als fons¶
Configurar l'Order in Layer del Sprite Renderer per assegurar que el fons queda darrere:
| Element | Order in Layer |
|---|---|
| Fons llunyà | -20 |
| Fons proper | -10 |
| Tilemap terreny | 0 |
| Jugador | 1 |
Organitzar amb GameObjects buits¶
Per mantenir la Hierarchy ordenada, agrupar els elements del fons dins de GameObjects buits:
Backgrounds (GameObject buit)
├── Sky
├── Mountains
└── Trees
Per crear un GameObject buit: Hierarchy → clic dret → Create Empty.
Repetir el fons
Si el fons no cobreix tot el nivell, duplicar-lo (Ctrl+D) i posicionar les còpies una al costat de l'altra.
So¶
Components de so a Unity¶
| Component | Funció |
|---|---|
| AudioListener | "Orella" que capta el so. Per defecte està a la Main Camera. Només n'hi pot haver un a l'escena. |
| AudioSource | Component que reprodueix so. S'afegeix a qualsevol GameObject. |
| AudioClip | El fitxer de so (.wav, .mp3, .ogg). |
Música de fons¶
- Seleccionar la Main Camera (o crear un GameObject dedicat).
- Add Component → Audio Source.
- Assignar l'AudioClip de la música a la propietat AudioClip.
- Configurar:
| Propietat | Valor |
|---|---|
| Play On Awake | Marcat (comença a sonar automàticament) |
| Loop | Marcat (es repeteix) |
| Volume | Ajustar al gust (0 a 1) |
Efectes de so des de codi¶
Per reproduir sons puntuals (tirs, salts, impactes):
public class PlayerSounds : MonoBehaviour
{
public AudioClip shootSound;
public AudioClip jumpSound;
private AudioSource audioSource;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
public void PlayShoot()
{
audioSource.PlayOneShot(shootSound);
}
public void PlayJump()
{
audioSource.PlayOneShot(jumpSound);
}
}
PlayOneShot(clip): reprodueix un clip una vegada, sense interrompre altres sons que estiguin sonant.Play(): reprodueix el clip assignat al component AudioSource. Si ja s'estava reproduint, el reinicia.
Volum
PlayOneShot accepta un segon paràmetre per ajustar el volum:
audioSource.PlayOneShot(shootSound, 0.5f); // A la meitat de volum