MVP i Power Up’y

Nic. Pustka. Null, nil, 0, ” „, String.Empty.
Miał być nowy, piękny system generowania znajdziek.
Ale nie ma i jeszcze pewnie trochę go nie będzie.

Przynajmniej do momentu, w którym nie uporządkuję projektów w pracy (tydzień?)

Minimum Viable Product

Na początek drobna zmiana w prowadzeniu repozytorium.
Dorzuciłem dwa foldery do głównego katalogu.

Struktura katalogów wygląda teraz następująco:

  • Flyen Shoot (projekt)
  • Demo (wersja stabilna)
  • Demo Beta (najnowszy build projektu)

Przy uzupełnianiu repozytorium kodem, będę też aktualizował wersję Demo Beta.

Tag: problem

To nie jest tak, że nie mam systemu losowania znajdziek. Oczywiście, że mam.
Ale jest bardzo biedny niezbyt wyrafinowany.

Ostatnio stworzyłem skrypt przechowujący dane gracza. No i zaczęły się schody.

Power Up uzupełniający życie dostawał – standardowo – prefab delikwenta.
Tylko że nie potrafił ogarnąć aktualnej wartości – na sliderze w GUI spadała ona normalnie, ale przy zbieraniu Power Up’a już się nie uzupełniała. Debug.Log pokazał, że pomimo spadku poziomu zdrowia, uparcie pobierane było 5.0f.

I po raz kolejny sytuacja, za którą kocham programowanie – wszystko można zrobić innym sposobem. Nie wiem czy jest to obejście problemu, czy alternatywne rozwiązanie, ale jak znam życie to jest to workaround 😐

Każdy podstawowy Game Object z Unity określany jest przez nazwę, warstwę i tag. Nie czytałem dokumentacji, ale zacząłem traktować tag jako fizyczną reprezentację jednostki w świecie. Do przypisywania wielu obiektów pod jednym hasłem po prostu używam warstw. Przy dezaktywacji znajdźki szukam najnowszego obiektu po tagu, zamiast podpinać go na starcie.

Problem solved!

Power Up

Postanowiłem trzymać jak najprostszy kod, jak to tylko możliwe (SRP?).
Dlatego każdy bonus jest unikatowym obiektem, wyposażonym w indywidualny skrypt (właściwie poza grafiką jest to jedyna różnica między nimi).

Nie będę po raz kolejny opisywał tworzenia prefabów. Wyobraźmy sobie znajdźkę jako wroga, który zamiast zadawać nam obrażenia – robi nam dobrze 😎

Ten słaby ZnajdźkoLosowacz

Skrypty który zaraz przeczytasz są słabe. Ale mam pewność, że jeszcze w kwietniu opracuję nowy system generowania Power Up’ów, dlatego nie będę robił mikrooptymalizacji.

Zawsze staram się pisać w miarę czytelny kod, ale jeśli masz jakieś pytania to zachęcam do zostawienia komentarza. Metoda Instantiate tworzy nowy obiekt, a właściwość Quaternion.identity ustawia jego rotację na 0 (wszystkie osie).

Tworzenie list w UI jest piękną rzeczą w Unity. Oczywiście można to samo zrobić w kodzie, ale wielką zaletą UI jest możliwość podpięcia tego samego skryptu do kilku różnych typów prefabów. Wtedy dostosowanie parametrów staje się bardzo szybkie.

CollectablesController generuje nam losową znajdźkę z listy. Wywołuję go w HandleDamage, po zniszczeniu wroga. Aktualnie dla testu ustawiłem 90% szansę wypadnięcia bonusu.

W sobotę powinienem mieć chwilę na kolejne funkcjonalności.
Trzeba przycisnąć temat bo za tydzień półmetek konkursu.