Lancement
Leçon 2 sur 19 du cours Jeu Unity : casse-briques de Coddy.
La balle reste sur la raquette jusqu’à ce que le joueur la lance. Jusque-là, Update() la place au-dessus de la raquette à chaque image, de sorte qu’elle va partout où va la raquette, et un bool mémorise si elle s’est envolée :
void Update()
{
if (launched) return;
transform.position = paddle.position + Vector3.up * 0.5f;
}Le Rigidbody de la balle n’est pas soumis à la gravité, donc une vitesse définie une seule fois la maintient en ligne droite. wasPressedThisFrame est vrai uniquement à l’image où une touche est enfoncée : lisez-le donc dans Update(). Pour voler à une vitesse exacte dans n’importe quelle direction, donnez à la direction une longueur de 1 unité avec .normalized, puis multipliez-la : new Vector3(3f, 4f, 0f).normalized * 10f vole à 10 unités par seconde.
Défi
FacileLa balle reste sur la raquette jusqu’à ce que la barre d’espace la lance.
- Dans
Ball, ajoutebool launched;etpublic void Launch(Vector3 direction):launched = true;etrb.linearVelocity = direction.normalized * speed; - Dans
Update(), retourne si la balle a été lancée ; sinon, place la balle àpaddle.position + Vector3.up * 0.5f. - Quand la barre d’espace
wasPressedThisFrame, appelleLaunch(new Vector3(0.3f, 1f, 0f)).
Appuie sur « Jouer », déplace la raquette, puis appuie sur la barre d’espace : la balle s’envole et s’arrête contre le premier mur (le rebond viendra ensuite). Puis clique sur « Vérifier ».
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 propulse.
}
Toutes les leçons de Jeu Unity : casse-briques
Entraînez-vous par vous-même : Playground Unity