La racchetta
Lezione 1 di 19 del corso Gioco in Unity: Rompi i mattoni di Coddy.
In questo corso costruisci Brick Breaker in 3D, una funzionalità con una lezione: una racchetta, una palla rimbalzante, un muro di mattoni, vite, livelli e potenziamenti. Tutto si muove sul piano x e y a z 0. Per ora gli script Paddle, Ball, Brick, GameManager e PowerUp sono degli stub. «Gioca» avvia il gioco; «Verifica» valuta il codice.
La racchetta ha un Rigidbody cinematico, spostato con rb.MovePosition in FixedUpdate(), così la fisica ne rileva il movimento. Un corpo cinematico attraversa i muri, quindi lo script lo mantiene al loro interno. Limitare il centro in corrispondenza del muro lascerebbe metà della racchetta al suo interno: il limite è la posizione del muro meno metà della larghezza. Con i muri a -6 e 6 e una racchetta larga 2:
float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);Il centro rimane tra -5 e 5, così le estremità si fermano esattamente in corrispondenza dei muri. Leggere la larghezza da transform.localScale.x a ogni passaggio mantiene corretto il limite se la racchetta si ingrandisce.
Sfida
FacileSposta la racchetta tra le pareti.
- In
Paddle, inFixedUpdate(), impostafloat inputsu -1 quando è premuta la freccia sinistra o A, su 1 quando è premuta la freccia destra o D, altrimenti su 0. - Calcola
Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime; - Con
float half = transform.localScale.x / 2f;, limitatarget.xtra-wallX + halfewallX - half, quindi eseguirb.MovePosition(target);
Premi «Gioca» e fai scorrere la racchetta fino a entrambe le pareti: si ferma a ciascuna. Poi premi «Verifica».
Provalo tu
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // le facce interne delle pareti laterali si trovano a -wallX e wallX
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Muoviti con le frecce o con A e D e resta tra le pareti.
}
}
Tutte le lezioni di Gioco in Unity: Rompi i mattoni
Esercitati da solo: Playground Unity