Lancement
Leçon 2 sur 16 du cours Jeu Unity : casse-briques de Coddy.
La balle attend sur la raquette jusqu'à ce que le joueur la lance. En attendant, le script la place au-dessus de la raquette à chaque image, afin qu'elle suive ses déplacements, et un bool mémorise si elle a été lancée. Le lancement définit une fois la linearVelocity du Rigidbody. La gravité est désactivée pour le Rigidbody de la balle ; dès lors, elle vole en ligne droite à cette vitesse jusqu'à ce qu'elle heurte quelque chose.
Un flotteur de pêche fonctionne de la même manière : il pend sous l'extrémité de la canne jusqu'au lancer.
bool cast;
void Update()
{
if (cast) return;
transform.position = rodTip.position + Vector3.down * 1.5f;
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
cast = true;
rb.linearVelocity = new Vector3(4f, 3f, 0f);
}
}wasPressedThisFrame est vrai uniquement pendant l'image où la touche est enfoncée, donc il est lu dans Update(), qui s'exécute une fois par image. Le flotteur vole à la vitesse correspondant à la longueur de (4, 3, 0), soit 5 unités par seconde. Pour lancer à une vitesse exacte dans n'importe quelle direction, donne à la direction une longueur de 1 unité avec .normalized, puis multiplie-la par la vitesse.
Défi
FacileDans Ball :
- Ajoute un
bool launched. - Écris
public void Launch(Vector3 direction): cette méthode définitlaunchedsur true et lalinearVelocitydu Rigidbody sur la direction normalisée, multipliée parspeed. - Ajoute
Update(). Tant que la balle n’est pas lancée, place-la 0.5 unité au-dessus de la position de la raquette et, lorsque tu appuies sur Espace, appelleLaunch(new Vector3(0.3f, 1f, 0f)).
La balle ne rebondit pas encore, elle s’arrête donc net au premier mur qu’elle touche : la prochaine leçon corrige cela.
Appuie sur Play, déplace la raquette, lance la balle, puis clique sur Check.
Essayez vous-même
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
// Ensuite : la balle reste sur la raquette jusqu’à ce que Space la lance.
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.