fizyka wzory prawa zadania teoria, chemia teoria zadania wzory, modelarstwo szkutnicze
izometria11.jpg

Pobierz kod Izometria w świecie prostokątnym- część 1
 
IZOMETRIA W ŚWIECIE PROSTOKĄTNYM

…jak zwykłe będzie o OMEDZE i DELPHI

Temat artykułu jest kontynuacją cyklu moich artykułów dotyczących gigantycznych światów 2D. Chciałbym opisać sposób, a raczej przedstawić propozycję realizacji problemu rzutu izometrycznego w kaflach ułożonych w sposób typowy dla płaskiego świata mapy gry. Czyli coś takiego

izometria11.jpg

Od razu zaznaczam grafika nie jest moja. Pobrałem ją z tego miejsca:
http://reinerstileset.4players.de/englisch.htm


UWAGA: uruchamiając przykład dołączony do artykułu proszę poczekać parę sekund. Plik danych jest dość duży, ponieważ przystosowałem go do trzech rodzajów map: prostokątnej, izometrycznej i góry-doliny (taki mój nowy format). Można go zmniejszyć o 40 %. Ale nie chcę nic zmieniać już w moim edytorze, który i tak nigdy nie zostanie ukończony….

1. Przygotowanie siatki świata

Model świata zapisany jest w mapie giganta 512x386 kafli, gdzie każdy ma wymiar 48x36. Można powiedzieć, że kafel ma nietypowy wymiar:) Otóż nie. Skrócenie jednego boku Stawarza wrażenie perspektywy- głębi (patrz cykl artykułów Wędrówki w świecie 2D ). a że akurat wybrałem 48x36 to tylko wynikało z pobranej grafiki. Tam autor rysunków rysował budynki lub postacie w stosunku 0,75 To znaczy 36/48= 0,75 Oznacza to, że mogę dobierać tak kafle, aby wysokość kafla miała 75% długości z podstawy. Wybrałem rozmiar 48x36 z kilku względów. Między innym z ograniczenia liczby wyświetlanych kafli we wszystkich warstwach oraz utworzenia, czegoś, co określam siatką drogi. Jest ona ukryta w danych warstwy 1. W sposób jawny w tym artykule jej nie wykorzystuję…i już jest temat na kolejny artykuł. Choć pisałem już o tym w Wędrówkach..

Wracając do sedna…osadzony budynek w płaskim świecie powinien wyglądać jak poniżej

izometria12.jpg

a jak się pokaże siatkę drogi, to obraz będzie taki jak poniżej

izometria13.jpg

Jednym z problemów izomerii jest stworzenie na płaszczyźnie głębi, z której wynika możliwość chowania się za budynkiem lub przeszkodą…, ale o tym już też pisałem Czerwone pola oznaczają barierę dla organizmów żywych lub pojazdów. Proszę zauważyć, że bitmapa zamku osadzona w całości ładnie wpasowała się w płaski świat prostokątnych kafli 2D. Reszta to już pisanie kodu. Mechanizm warstw opisałem w gigantach. Tak wiec pomijam to. Z jedną tylko różnicą. Warstwa gruntu, czyli zerowa jest nowego typu

2. Nowy model warstwy zerowej -grunt

Silnik (jeżeli mogę tak powiedzieć) Omegi to te poniższe linie kodu

OmegaScreen1.BeginRender;
OmegaScreen1.ClearScreen(0,0,0,0);
OmegaSprite1.Collision;
OmegaSprite1.Dead;
OmegaSprite1.Move(OmegaTimer1.DeltaSecs);
OmegaSprite1.Draw;
OmegaScreen1.EndRender

Najbardziej obciąża zegar gry OmegaSprite1.Collision oraz OmegaSprite1.Draw; no i oczywiście to, co sami spapramy. Ogólnie mówiąc wszystko szybko śmiga, gdy mało mamy obiektów typu TSprite. Należy dążyć aby warstwy możliwie mało zawierały TSprite, większą ilość takich obiekty należy pozostawić na postacie. Przypominam, że gadżety i inne obiekty nieruchome w moim rozwiązaniu przekazują swoje cechy kaflom warstw 1 lub 2. Oczywiście gdy są widoczne na ekranie, jeżeli są poza ekranem to cała mechanika zderzeń dzieje się w siatce danych. A że ja oparłem warstwy świata na tym obiekcie to znaczy pochodnej TSprite, więc do wcześniej opisanego rozwiązania (patrz arty: Giganty świata 2D) wprowadzam pewną modyfikację. Warstwa grunt nie musi być potomkiem tej klasy, nie musi pamiętać głębi- wystarczy ze będzie pierwsza narysowana (patrz procedura PokazGrunt(skokX,skokY))

OmegaScreen1.BeginRender;
OmegaScreen1.ClearScreen(0,0,0,0);
RuchWSwiecie(4{OmegaTimer1.DeltaSecs*300});
PokazGrunt(skokX,skokY);
//dotyczy warstwy 1, 2
OmegaSprite1.Collision;
OmegaSprite1.Dead;
OmegaSprite1.Move(OmegaTimer1.DeltaSecs);
OmegaSprite1.Draw;

nie musi wykrywać kolizji, a całą resztę musi umieć co warstwy 1 i 2. Zainteresowanych odsyłam do kodu. Nowy model warstwy gruntu to klasa TKostkaGruntuMapy. Posiada ona te same procedury i funkcje ruchu co pozostałe. Metodę rysowania płynnych przejść opisałem w artykule Płynne przejścia terenu .Przykład pracuje w trybie 1024x768 z włączoną synchronizacją. FPS w dobrej formie…Wszystko zostało już powiedziane.

UWAGA

Aby dołączony przykład działał poprawnie wymagane są te pliki

swiat_512x384.mue2D
teren_rosliny.oil
swiatynie.oil
zamki.oil
D3DX81AB.DLL
MPPSDK.DLL

Muszą być one zapisane w tym samym katalogu, co plik exe
 
Układ okresowy- kod qr
Układ okresowy

Układ okresowy pierwiastków- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Alkomat- wirtualny test kod qr
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Światłomierz fotograficzny kod qr
Światłomierz fotograficzny

Światłomierz fotograficzny- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Taklarz- olinowanie stałe kod qr
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz