W ostatnim wpisie (Tiled Map Editor) omówiłem program, przeznaczony do tworzenia map, wykorzystywanych w grach 2D. W tym wpisie zajmiemy się, implementacją utworzonej mapy w naszym projekcie UWar. W ten sposób zrobimy kolejny krok w kierunku ukończenia naszej gry, która z każdym wpisem przybiera coraz to lepszy wygląd.
Implementacja
Musimy pamiętać, aby do katalogu assets dodać, pliki wygenerowane przez Tiled Map Editor, są to pliki z rozszerzeniami .tsx i .tmx.
Do obsługi, dodanych wcześniej plików, wykorzystamy dwie klasy jakie udostępnia nam biblioteka libGDX: TiledMap i OrthogonalTiledMapRenderer.
Pierwsza z klas odpowiada za wczytanie pliku z rozszerzeniem .tmx, czyli przygotowanej mapy.
Druga, jak sama nazwa wskazuje, odpowiada za wyświetlanie wczytanej wcześniej mapy na ekranie.
Wygenerowana przeze mnie mapa jest orientacji ortogonalnej, dlatego korzystamy z klasy OrthogonalTiledMapRenderer. W przypadku, gdy nasza mapa byłaby izometryczna, do renderowania musielibyśmy wykorzystać klasę IsometricTiledMapRenderer.
W klasie Game.java deklarujemy dwie nowe zmienne, z klasami opisanymi powyżej.
private TiledMap map; private OrthogonalTiledMapRenderer renderer;Teraz naszym zadaniem jest inicjalizacja nowych zmiennych.
map = new TmxMapLoader().load("map/map.tmx"); renderer = new OrthogonalTiledMapRenderer(map);Zmienna map inicjalizowana przez konstruktor oraz metodę load(), która wczytuje z podaje w parametrze ścieżki plik z rozszerzeniem .tmx.
renderer jest inicjalizowany przez konstruktor z parametrem klasy TiledMap.
Teraz musimy ustawić widok, który będzie odpowiedzialny za odświeżanie wczytanej mapy. Wykorzystamy do tego zmienną camera klasy OrthographicCamera, z której już wcześniej korzystaliśmy np. przy poruszaniu graczem, aby bohater był zawsze na środku ekranu.
W metodzie update() korzystamy z dostarczonej przez klasę OrthogonalTiledMapRenderer metody setView(camera).
renderer.setView(camera);Teraz pozostało nam już tylko dodanie kodu odpowiedzialnego za wyświetlenie w każdej klatce gry, naszej mapy. Przechodzimy zatem do metody render() i tam dodajemy kod odpowiedzialny za rysowanie wczytanego pliku z mapą na ekranie.
renderer.render();Efekt pracy
Podsumowanie
Jak widzimy implementacja stworzonej mapy w programie Tiled Map Editor nie jest taka trudna, jak mogłoby się wydawać. Jednak to nie wszystkie możliwości jakie daje nam ten program. Kilka linijek kodu sprawiło, iż gra wygląda, jeszcze lepiej niż dotychczas. W kolejnych wpisach zajmiemy się wyglądem menu oraz ekranu kończącego rozgrywkę.
Pozdrawiam,
sirmarbug