Wpis z mikrobloga

Cześć!
Bawię się w Unity w tworzenie prototypu gry TPP z elementami budowania. W związku z tym gameplay będzie miał różne stany:
- poruszanie się postacią - stan "domyślny"
- budowanie - stan "budowania" po wciśnięciu odpowiedniego przycisku, gdzie kamera oddala się tworząc widok izometryczny, rysuje się grid, na którym możemy myszką umieszczać budynki
- prawdopodobnie jakieś inne w przyszłości

Pytanie techniczne dla osób mających doświadczenie w Unity - jak to najlepiej zrobić? Każdy stan charakteryzuje się własną obsługą wejść, osobną kamerą itp itd. W stanie budowania gracz nie będzie miał możliwości poruszania się.

Jakiś osobny GameObject, który będzie przechowywał stan gry? Wtedy taki obiekt mógłbym udostępniać innym komponentom, które tych informacji potrzebował.

Wtedy w kontrolerze gracza mógłbym po prostu zrobić

if (gameState == GameState.BUILDING) return;

żeby nie obsługiwać wejścia dla gracza. I odwrotnie w skrypcie odpowiadającym za budowanie.
Nie taguję "programowanie" bo temat zbyt mocno powiązany z Unity.
Dodaję kotka dla atencji ( ͡° ͜ʖ ͡°)

#unity3d #unity
LoginZeStali - Cześć!
Bawię się w Unity w tworzenie prototypu gry TPP z elementami b...

źródło: comment_16036645256kIK8FDZFxdMhtFuuMz8lw.jpg

Pobierz
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Piękny to czas nauki robienia gier, gdy myśli się że stan gry da się zdefiniować enumem ()

@LoginZeStali: Możesz enumem i sprawdzać wszędzie jaki to stan, będzie działać. Bardziej przyszłościowe jednak będzie podzielenie gry na moduły które aktywujesz/dezaktywujesz high levelowo. Dzięki temu nigdzie nie musisz sprawdzać stanu gry tylko działają moduły które aktywowałeś. Każdy taki moduł powinien sobie sam input zgarniać i robić
  • Odpowiedz
@draculeq: Enumy i state machine zrobiony w ten sposób to jedyne co mi przyszło do głowy. Mam spor doświadczenie z programowaniem, ale małe z Unity, dlatego ciężko mi czasami przełożyć wzorce z czystego kodu na możliwości całego silnika ;)

W sumie racja, to co opisałeś ma zdecydowanie więcej sensu. Spróbuję w ten sposób.
  • Odpowiedz