Menu
CoddyTech

Objets qui tombent

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

Une brique cassée laisse parfois tomber un bonus qui tombe vers la raquette. La décision de le faire tomber est déterminée par un tirage : Random.value est un nombre flottant aléatoire compris entre 0 et 1, donc Random.value < 0.15f est vrai environ 15 fois sur 100. Stocker la probabilité dans un champ permet de l’ajuster et permet à un test de la définir à 1 pour obtenir une chute à chaque fois, ou à 0 pour n’en obtenir aucune.

Le bonus qui tombe est déterminé par un second tirage : un index aléatoire dans un tableau de prefabs. Avec des entiers, Random.Range exclut sa valeur maximale, donc Random.Range(0, array.Length) peut sélectionner chaque élément. Le butin d’un ennemi :

public GameObject[] loot;
public float lootChance = 0.25f;

void DropLoot()
{
    if (Random.value >= lootChance) return;
    int pick = Random.Range(0, loot.Length);
    Instantiate(loot[pick], transform.position, Quaternion.identity);
}

Un bonus tombe à vitesse constante en se déplaçant à chaque image, et se détruit une fois sous la zone de jeu, afin que ceux qui sont manqués ne s’accumulent pas. Son prefab possède un Rigidbody cinématique et un collider déclencheur, afin que le système physique sache qu’il se déplace et qu’il puisse détecter quand il atteint la raquette.

challenge icon

Défi

Difficile

Les briques cassées laissent parfois tomber un bonus.

  1. Dans PowerUp, ajoute fallSpeed = 3f et bottomY = -9f ; dans Update(), fais-le tomber à la vitesse fallSpeed et détruis-le lorsqu’il passe sous bottomY.
  2. Dans GameManager, ajoute public GameObject[] powerUps; et public float dropChance = 0.15f;
  3. Dans BrickBroken, si Random.value < dropChance, instancie powerUps[Random.Range(0, powerUps.Length)] à la position de la brique.

Appuie sur « Jouer » et casse des briques : de temps en temps, l’une d’elles laisse tomber un bonus (tu apprendras à l’attraper ensuite). Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class PowerUp : MonoBehaviour
{
    // Le dernier chapitre : les bonus qui tombent des briques cassées.
}

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

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