Menu
CoddyTech

La raquette

Leçon 1 sur 19 du cours Jeu Unity : casse-briques de Coddy.

Dans ce cours, tu construis un casse-briques en 3D, une leçon à part entière : une raquette, une balle rebondissante, un mur de briques, des vies, des niveaux et des bonus. Tout se déplace dans le plan x et y à z 0. Les scripts Paddle, Ball, Brick, GameManager et PowerUp sont pour l’instant des squelettes. « Jouer » lance le jeu ; « Vérifier » évalue ton code.

La raquette a un Rigidbody cinématique, déplacé avec rb.MovePosition dans FixedUpdate(), afin que le moteur physique la voie se déplacer. Un corps cinématique traverse les murs, donc le script l’empêche de sortir. Limiter le centre au niveau du mur laisserait la moitié de la raquette à l’intérieur : la limite correspond au mur moins la moitié de la largeur. Avec des murs à -6 et 6 et une raquette de 2 de largeur :

float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);

Le centre reste entre -5 et 5, de sorte que les extrémités s’arrêtent exactement aux murs. Lire la largeur depuis transform.localScale.x à chaque étape permet de conserver la bonne limite si la raquette s’agrandit.

challenge icon

Défi

Facile

Déplace la raquette entre les murs.

  1. Dans FixedUpdate() de Paddle, définis float input à -1 lorsque la flèche gauche ou A est maintenue, à 1 lorsque la flèche droite ou D est maintenue, et à 0 sinon.
  2. Calcule Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;
  3. Avec float half = transform.localScale.x / 2f;, limite target.x entre -wallX + half et wallX - half, puis rb.MovePosition(target);

Appuie sur « Jouer » et fais glisser la raquette contre les deux murs : elle s’arrête contre chacun d’eux. Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;
using UnityEngine.InputSystem;

public class Paddle : MonoBehaviour
{
    public float speed = 14f;
    public float wallX = 8f;   // les faces intérieures des murs latéraux se trouvent à -wallX et wallX

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Déplace-toi avec les touches fléchées ou A et D, et reste entre les murs.
    }
}

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

Entraînez-vous par vous-même : Playground Unity