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.
Sfida
DifficileL’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
anglee la freccia giù lo diminuisce, aturnSpeedgradi al secondo, senza mai scendere sotto 10 o salire sopra 60. A ogni frame, imposta la rotazione della canna suQuaternion.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 dipowerlungo la canna, sottrai 1 aballse registra quanti ne restano, comeBalls 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
MovePositionaspeedunità al secondo e inverti la direzione ogni volta che si trova arangeunità dal punto di partenza. - Quando una palla (con tag
Ball) colpisce il bersaglio, registra il nome del bersaglio ehit!, comeTarget2 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
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere