Menu
CoddyTech

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.

challenge icon

Défi

Facile

Dans Ball :

  1. Ajoute un bool launched.
  2. Écris public void Launch(Vector3 direction) : cette méthode définit launched sur true et la linearVelocity du Rigidbody sur la direction normalisée, multipliée par speed.
  3. 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, appelle Launch(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.
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Jeu Unity : casse-briques