Obsługa sterowania gracza

Mam dla Ciebie dwie wiadomości, dobrą i złą. Zła jest taka, że gracz oczekuje od nas, że w naszą grę będzie mógł grać. Czyli dochodzi nam dodatkowa robota z obsługą sterowania. Ta dobra wiadomość jest natomiast taka, że Unity rozwiązuje ten problem w dość prozaiczny sposób, i nie stracimy tutaj zbyt wiele czasu.

Input Manager

Znajdziemy go pod adresem Edit > Project Settings > Input. Wszystkie widoczne wpisy wydają się być zduplikowane, ale po chwili analizy widać różnicę. Pierwsza połowa jest odpowiedzialna za obsługę klawiatury i myszy, a druga za pada (nazywanego tutaj Joystick). Możemy dowolnie wyedytować tą kolekcję, pamiętając o ustawieniu najważniejszych opcji, takich jak nazwa elementu czy nazwa i typ buttona.

Input Class

Do sprawdzenia czy nastąpiła reakcja użytkownika należy użyć statycznej klasy Input i jednej z metod:

  • GetAxis() – przyjmuje w parametrze nazwę osi i zwraca wychylenie gracza, jako wynik z zakresu -1.0f a 1.0f. Będę musiał sprawdzić czy ruch strzałkami i padem się różni – klawiatura powinna zwracać nam -1 albo 1, ale gałka pada może być wychylona np. tylko w połowie. Dla finalnego efektu to nie ma dużego znaczenia, ale możliwe że joystick daje dokładniejsze sterowanie.
  • GetButtonDown() oraz GetButton() – przyjmuje w parametrze nazwę guzika i zwraca wartość true/false. Pierwsza funkcja sprawdza czy przycisk został wciśnięty (jednorazowo) i można jej użyć np. do utworzenia skoku postaci. Druga z nich sprawdza czy guzik jest wciśnięty (ciągle). Ostatnio użyłem jej aby utworzyć ciągły strzał gracza.

I tyle. Są jeszcze dostępne inne metody, takie jak GetKey albo GetMouseButton. Jednak używając GetButton możemy równocześnie obsłużyć klawiaturę i pada, dając dowolność wyboru graczowi. Jeśli robilibyśmy grę lokalną dla dwóch graczy, wystarczyłoby dodać nowe wpisy w Input Manager i rozróżnić je np. przedrostkami P1_ i P2_, wtedy używając GetAxis(„P2_Horizontal”) – wiedzielibyśmy że ruch wykonuje drugi gracz w osi poziomej.

Setup

Ustawienia klawiszy eksportowane są także do Launcher’a gry, aby użytkownik mógł je nadpisać według własnych upodobań. Warto pousuwać nieużywane elementy w Input Manager, aby gracz później nie zastanawiał się dlaczego ma do dyspozycji przyciski Fire1, Fire2 i Fire3. W tym miejscu wyświetla się także opis, który powinniśmy wcześniej ustawić.