Menu
CoddyTech

Gittata del cannone

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 61 di 63.

Un cannone si trova a un'estremità di un poligono di tiro, e tre bersagli scivolano da un lato all'altro attraversando il poligono a distanze diverse. Inclina la canna verso l'alto e verso il basso per raggiungere ciascuna distanza e scegli il momento di ogni colpo in modo che il bersaglio attraversi la linea di tiro. Una palla che colpisce un bersaglio lo abbatte e si esaurisce; qualsiasi altra cosa urti un bersaglio lo lascia indisturbato. I bersagli sono corpi cinematici, quindi gli impatti non li spingono mai, e il cannone contiene cinque palle.

Scrivi due script: Cannon sulla canna e Target su ciascun bersaglio.

challenge icon

Sfida

Difficile

L’Inspector fornisce a Cannon ballPrefab (un Rigidbody: il prefab Ball, massa 2, con tag Ball), angle (30), turnSpeed (40), power (30) e balls (5).

  • La freccia su aumenta angle e la freccia giù lo diminuisce, a turnSpeed gradi al secondo, senza mai scendere sotto 10 o salire sopra 60. A ogni frame, imposta la rotazione della canna su Quaternion.Euler(-angle, 0, 0): in Unity un angolo x positivo inclina la parte anteriore verso il basso, quindi il segno meno la inclina verso l’alto.
  • La barra spaziatrice spara una palla finché balls è maggiore di 0: generala a 1 unità davanti al centro della canna, lungo la canna, spingila con un impulso di power lungo la canna, sottrai 1 a balls e registra quanti ne restano, come Balls left: 4. Se non restano palle, la barra spaziatrice non fa nulla.

Ogni bersaglio ha un Rigidbody cinematico e l’Inspector fornisce a Target speed e range (2 e 3 per Target1).

  • A ogni passo fisico, sposta il bersaglio lungo x con MovePosition a speed unità al secondo e inverti la direzione ogni volta che si trova a range unità dal punto di partenza.
  • Quando una palla (con tag Ball) colpisce il bersaglio, registra il nome del bersaglio e hit!, come Target2 hit!, e distruggi sia il bersaglio sia la palla. Qualsiasi cosa che non sia una palla lo lascia intatto.

Premi Play e abbatti tutti e tre i bersagli, poi premi Check.

Provalo tu

using UnityEngine;

public class Cannon : MonoBehaviour
{
    [SerializeField] private Rigidbody ballPrefab;
    [SerializeField] private float angle = 30f;
    [SerializeField] private float turnSpeed = 40f;
    [SerializeField] private float power = 30f;
    [SerializeField] private int balls = 5;

    void Update()
    {
        // Mira con le frecce su e giù, spara con Space
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fisica e gameplay