Kiedy używać aktorów w libgdx? Czym są wady i zalety?

Piszę simple solar system simulator. To mój pierwszy projekt libgdx. Używam sceny i aktorów do menu głównego i jest bardzo poręczny, zwłaszcza Obsługa wydarzeń dotykowych. Ale ... patrząc na przykłady widzę, że nikt nie używa aktorów w prawdziwej logice gry. Zastanawiam się, czy powinienem używać aktora jako rodzica klasy planet, czy po prostu napisać własną klasę. Planety nie będą dotykalne i będą przesuwane tylko między klatkami, więc trzeci parametr action MoveBy będzie musiał być czas między klatkami. To są wady. Jakie są zalety korzystania z aktorów?

Author: Lord_JABA, 2012-05-16

1 answers

Główne plusy dla aktorów to akcje, testy uderzeń i wydarzenia dotykowe oraz grupy aktorów.

Działania umożliwiają szybkie i łatwe tworzenie animacji, jeśli logika gry tego potrzebuje.

Możesz wywołać scenę.hit (x, y) w dowolnym momencie, aby zwrócić pierwszy aktor, który zwraca true do co hit logiki napisałeś dla niego (zwykle sprawdzanie granic z X, y, szerokość, wysokość). zwróć tego aktora lub null, aby kontynuować iterację poprzez metody hitów aktorów, szukając przebojowego aktora. Zwracane jest Null, jeśli żaden z aktorów trafiony.

Hit jest używany do wydarzeń dotykowych na scenie. Metody dotyku aktora są przekazywane lokalnie, a scena obsługuje nakładanie się obiektów, np. jeśli aktor zakrywa innego aktora tak, że drugi aktor nie powinien otrzymać przyziemienia, zwróć true na aktora zakrywającego, aby zatrzymać wywoływanie przyziemienia na aktorach "poniżej". To również ustawia "focus" na aktora, który zwraca true tak, że dotknięcie aktora zostanie wywołane.

Możesz grupować aktorów razem, aby wystąpili Akcje, wydarzenia dotykowe itp. na całej Grupie aktorów jako jedna jednostka.

Niektóre Minusy: Aktorzy wymagają sceny, która nieco ogranicza funkcjonalność. Wiele koderów używa innej logiki do określenia stanu obiektu gry, a nie akcji scene2d (np. box2d). Jeśli używasz aktorów do obiektów gry, prawdopodobnie będziesz potrzebował dwóch etapów, jednego dla interfejsu użytkownika i jednego dla świata gry. Jeśli ich nie używasz, prawdopodobnie będziesz używać własnego SpriteBatch i aparatu. I należy pamiętać, że aktorzy masz tylko abstrakcyjną metodę rysowania, więc i tak będziesz musiał utworzyć logikę rysowania. Prawdopodobnie będziesz trzymał Tekstureregion lub Sprite jako prywatne pole dla aktora. Jeśli chcesz użyć własnej logiki aktualizacji, możesz nadpisać metodę act (float delta), aby uzyskać czas delta (call super.act (delta), jeśli używasz akcji).

Więc jeśli masz własną logikę i nie wykorzystasz zbyt wiele z tego, co Stage ma do zaoferowania, oszczędzaj zasoby i rozwijaj własne rozwiązanie specyficzne dla aplikacji. Jeśli możesz użyć niektóre z plusów, nie ograniczając potrzebnej funkcjonalności, następnie przejść do drugiego etapu logiki gry.

 37
Author: broken-e,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-22 20:13:36