Niedawno zmierzyłem się z godotowymi tilesetami, to dość toporny mechanizm.
Tworzenie tilesetu polega w godocie na utworzeniu nowej sceny, do której dodajemy nody typu Sprite. Każdy utworzony Sprite bierzemy pod lupę i dodajemy mu wszystko to, czego potrzebuje aby stać się pełnoprawnym elementem świata gry - to jest texturę oraz blok kolizji. Banalne? Tak. Ale niezbyt przyjemne. Przycinanie textury polega tu na ręcznym wprowadzaniu współrzędnych i rozmiarów danego tila. Każdego po kolei...
Rysowanie bloku kolizji też nie zadowala. Aby to zrobić należy do tak sporządzonego sprite dodać dziecko typu CollisionPolygon i za pomocą narzędzia ołówka narysować obszar kolizji dla każdego tila osobno (albo skopiowanie takiego obszaru, po czym zmiana jego współrzędnych w atrybutach). Bardzo tu pomaga możliwość utworzenia na scenie siatki, do której można przyciągać punkty obszaru kolizji nanoszone ołówkiem.
Utworzyłem dla testów tileset składający się z 4 tilów i eksporotwałem go do pliku zrozumiałego dla godota. Do wyboru miałem 3 różne rozszerzenia - .xml, .res oraz .tres. Przy wgrywaniu takiego setu do mapy rozpoznawane są już tylko dwa z nich - .xml i .tres.
Trochę boli to, że nie można użyć do tej mozolnej pracy jakiegoś narzędzia wyższego poziomu. Tiled zapisuje swoje mapy w formacie .json i kilku innych, ale nie ma tam .xml ani tajemniczego .tres. Internetowy konwerter json -> xml też nie pomaga (i się nie dziwię, po prostu musiałem spróbować).
Potem spróbuję zautomatyzować ten proces, na razie czeka mnie dużo klikania, rysowania i wklepywania coordów.
Dodałem mapkę do projektu i odpaliłem grę. Patrzyłem, jak ludek popychany godotową siłą ciążenia spada w dół, po czym ląduje prawidłowo na ziemi. Satysfakcjonujące. Potem przeszedłem się w prawo... I spadłem w niewidzialną dziurę pomiędzy tilami. Dziwne, obszary kolizji narysowałem bardzo dokładnie i na postaci i na tilach. Jeszcze nie udało mi się tego przypadku rozgryźć.
Acha, godotową siłę ciążenia uaktywniłem opakowując mój Sprite postaci w obiekt o nazwie RigidBody i nadając mu tym samym atrybuty budujące jego ciało. Mogę tam na przykład zmienić wartość masy obiektu lub zabawnego atrybutu o nazwie 'bounce'. :)
Pozdrawiam!
Hej,
OdpowiedzUsuńdo przyspieszenia pracy z tilesetami w Godocie polecam Ci skorzystać z Tilesethelper (https://godotengine.org/asset-library/asset/9)
Możesz go ściągnąć przez Godota w AssetLib
https://snag.gy/5d6FjN.jpg
Sam niedawno robiłem grę w Godocie i ten tool znacznie poprawił pracę z tilesetami. ;)
Gdybyś więc miał jakieś problemy z nim związane to uderzaj śmiało, chętnie podzielę się wiedzą ;)
Pozdrawiam serdecznie,
Artur "ekhart" Dębkowski
http://ekhart.pl
Hej, dzięki za radę :) Szczerze, to z racji że już proponowałeś mi swoją pomoc, miałem dzisiaj do Ciebie się odezwać. Przy okazji - jestem bardzo ciekaw twojej gry w godocie.
UsuńZapraszam do kontaktu przez mail, slack, social media itp. http://ekhart.pl/index.php/kontakt
OdpowiedzUsuńJeśli chodzi o grę to przygotowywałem remake River Raida
https://www.youtube.com/watch?v=U9PwzE38n1I
kod jest dostępny na moim Githubie
https://github.com/ekhart
Pozdrawiam serdecznie,
Artur "ekhart" Dębkowski
http://ekhart.pl