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.
Wyzwanie
ŁatwySpraw, aby skrzynki z amunicją uzupełniały amunicję Blastera (ammo 4, maxAmmo 10).
- W
Blaster.csdodajpublic int AddAmmo(int amount):int taken = Mathf.Min(amount, maxAmmo - ammo);, dodaj tę wartość doammo, wypisz w logu"Ammo: " + ammoi zwróćtaken. - W
AmmoCrate.cs, gdyother.TryGetComponent(out Blaster blaster), wywołajblaster.AddAmmo(amount);iDestroy(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
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa4Korutyny
WywoływanieInvokeRepeating i CancelInvokeTwoja pierwsza korutynaPętle w korutynachZatrzymywanie korutynPodsumowanie: odliczanie10Projekt: Ucieczka z areny
ArenaŁowcy2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur5Projekt: Wyścig po monety
Tocząca się piłkaZbieranie monet3Wyzwalacze
Kolizje wyzwalająceOnTriggerEnterPrzedmioty do zebraniaSkrzynie zatrzymują resztęStrefy śmierciWejście i wyjściePodsumowanie: klucz i drzwiPoćwicz samodzielnie: Edytor online Unity