Menu
CoddyTech

Spadające przedmioty

Lekcja 14 z 19 w kursie Gra w Unity: Brick Breaker w Coddy.

Rozbita cegła czasami upuszcza ulepszenie, które spada w kierunku paletki. To, czy je upuści, zależy od losowania: Random.value to losowa liczba zmiennoprzecinkowa z zakresu od 0 do 1, więc Random.value < 0.15f ma wartość true w około 15 przypadkach na 100. Przechowywanie szansy w polu pozwala ją dostrajać, a także ustawić ją w teście na 1, aby ulepszenie wypadało za każdym razem, albo na 0, aby nie wypadało nigdy.

To, które ulepszenie wypada, zależy od drugiego losowania: losowego indeksu tablicy prefabów. Random.Range z liczbami całkowitymi nie uwzględnia maksimum, więc Random.Range(0, array.Length) może wybrać każdy element. Łupy przeciwnika:

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);
}

Ulepszenie spada ze stałą prędkością, przemieszczając się w każdej klatce, i niszczy się, gdy znajdzie się poniżej obszaru gry, dzięki czemu te, które minęły paletkę, nie gromadzą się. Jego prefab ma kinematyczny komponent Rigidbody i collider wyzwalacza, dzięki czemu system fizyki wie, że się porusza, a ulepszenie może wykryć, kiedy dotrze do paletki.

challenge icon

Wyzwanie

Trudny

Zniszczone cegły czasami upuszczają ulepszenie.

  1. W PowerUp dodaj fallSpeed = 3f i bottomY = -9f; w Update() spraw, aby obiekt spadał z prędkością fallSpeed na sekundę i był niszczony poniżej bottomY.
  2. W GameManager dodaj public GameObject[] powerUps; i public float dropChance = 0.15f;
  3. W BrickBroken, jeśli Random.value < dropChance, utwórz instancję powerUps[Random.Range(0, powerUps.Length)] w pozycji cegły.

Naciśnij „Graj” i rozbijaj cegły: od czasu do czasu jedna upuści ulepszenie (łapanie go będzie następne). Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class PowerUp : MonoBehaviour
{
    // Ostatni rozdział: bonusy wypadające z rozbitych cegieł.
}

Wszystkie lekcje w sekcji Gra w Unity: Brick Breaker

Poćwicz samodzielnie: Edytor online Unity