Menu
CoddyTech

Przedmioty do zebrania

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 17 z 71.

Podniesiony przedmiot to wyzwalacz z własnym skryptem. Gdy coś do niego wejdzie, sprawdza, czy to gracz, przekazuje mu swój efekt i niszczy sam siebie. Skrypt gracza przechowuje wynik i udostępnia publiczną metodę, która go obsługuje. Ten pakiet zdrowia leczy każdy obiekt, który ma skrypt Health:

// HealthPack.cs
public int amount = 25;

void OnTriggerEnter(Collider other)
{
    if (other.TryGetComponent(out Health health) && health.hp < 100)
    {
        health.Heal(amount);
        Destroy(gameObject);
    }
}
// Health.cs, na graczu
public int hp = 50;

public void Heal(int amount)
{
    hp = Mathf.Min(hp + amount, 100);
    Debug.Log("HP: " + hp);
}

other.TryGetComponent(out Health health) zwraca false w przypadku skrzyni, która wsuwa się w pakiet, więc tylko obiekt ze skryptem Health może go podnieść, a gracz z pełnym zdrowiem zostawia pakiet na później. Pakiet znajduje gracza za pośrednictwem other, więc nie trzeba przypisywać żadnego pakietu w Inspectorze, a poziom może zawierać ich pięćdziesiąt. Heal jest public, ponieważ wywołuje ją inny skrypt, a limit 100 znajduje się w Health — jedynym miejscu, które zarządza hp. Destroy(gameObject) usuwa pakiet; Destroy(other.gameObject) usunęłoby gracza.

challenge icon

Wyzwanie

Łatwy

Spraw, aby skrzynki z amunicją uzupełniały amunicję Blastera (ammo 4, maxAmmo 10).

  1. W Blaster.cs dodaj public int AddAmmo(int amount): int taken = Mathf.Min(amount, maxAmmo - ammo);, dodaj tę wartość do ammo, wypisz w logu "Ammo: " + ammo i zwróć taken.
  2. W AmmoCrate.cs, gdy other.TryGetComponent(out Blaster blaster), wywołaj blaster.AddAmmo(amount); i Destroy(gameObject);.

Naciśnij „Graj” i przejdź w prawo: w konsoli pojawi się Ammo: 7, a następnie Ammo: 10. Potem naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class AmmoCrate : MonoBehaviour
{
    public int amount = 3;

    void OnTriggerEnter(Collider other)
    {
        // Blaster gracza zabiera amunicję, a skrzynia znika
    }
}

Wszystkie lekcje w sekcji Fizyka i rozgrywka

Poćwicz samodzielnie: Edytor online Unity