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

Pobierz kod Giganty Świata 2D - część 3

GIGANTY ŚWIATA 2D część 3
MODEL ŚWIATA IZOMETRYCZNEGO


No i jesteśmy już przy ostatniej części rozważań o istocie ŚWIATÓW... W tej części opiszę jak zrobić GIGANTYCZNY ŚWIAT zbudowany na mapie izometrycznej. Poniżej widok na fragment giganta izometrycznego. Kafli jest 2500 x 2500...

giganty2d31.jpg

Graficznie nic ciekawego ale z punktu widzenia oprogramowania i rozwiązania problemu sytuacja jest inna. Model ruchu świata jaki tu wykorzystałem jest o wiele precyzyjniejszy niż w innych artykułach opisujących poruszanie światem izometrycznym. W moim rozwiązaniu można kaflem poruszać z dokładnością do jednego piksela a nie do połowy jego szerokości i wysokości... Ten kto czytał inne arty na ten temat wie co mam na myśli.

Układ kafli w świecie izometrycznym

...różni się od prostokątnego. Proszę spojrzeć na poniższy rysunek

giganty2d32.jpg

Rysunek ten przedstawia standardowe podejście do map izometrycznych. Ale można też to samo przedstawić tak

giganty2d33.jpg

Robimy więcej kafli, a to pozwoli nam świat izometryczny zamknąć w układzie prostokątnym. Z części drugiej wiemy jak tworzyć giganty i nimi poruszać. Model jest gotowy. Wystarczy go zastosować do układu izometrycznego. Proste.

Mała uwaga w układzie izometrycznym mamy więcej wierszy, które układają się jak na poniższym rysunku

giganty2d34.jpg

Faza 1 pokazuje stan wyjściowy. Faza druga ma miejsce gdy kości dojdą do momentu przerzucania obrazu (opis: patrz część pierwsza i druga). Ponadto w momencie tworzenia kości warstw należy co drugi wiersz przesunąć w prawo lub w lewo o połowę szerokości. Każdy nowy wiersz jest obniżony w stosunku do poprzedniego o połowę wysokości kafla. W układzie prostokątnym przesunięć nie było a każdy kolejny wiersz był obniżany o całą wysokość kafla.

Co dalej?

Na pewno należy obsłużyć kliknięcie w kafel. Podejście jest bardzo podobne co w układzie prostokątnym z mała różnicą. Mamy do dyspozycji jedną czwartą obszaru kafla. Konkretnie ćwiartkę leżącą przy górnym lewym rogu kafla.

Dlaczego tak jest?

Otóż kafle są tak samo tworzone na "stercie" pamięci jak byśmy układali karty do gry w kolejnych rzędach i wierszach. Przesuwając co drugi wiersz o połowę szerokości karty w prawo lub lewo i obniżając w stosunku do poprzedniego wiersza o połowę wysokości w dół. Jeżeli teraz palcem wskażemy konkretną kartę to możemy dotknąć ją w jednej czwartej powierzchni. Oczywiście ostatni karta może być dotykana w całym obszarze.

Niezależnie od tego czy jest to świat prostokątny czy izometryczny musimy odczytać pozycję w świecie. W moim modelu tę informację przechowuje to pole:


TKostkaMapy=class(TSimpleAnimSprite)
indeks:integer;


Jego wartość jest odpowiednio zmieniana w procedurze

procedure TKostkaMapy.ZmianaKlatki;

Wcześniej o tym nie pisałem ale dobrze jest pamiętać kilka informacji o przesuniętym świecie. Ja to przechowuję w tym rekordzie

RogSwiata:record
x,
y:single;//wspolrzedne lewego gornego rogu
kolumna,
wiersz,
Indeks:LongInt;//Indeks Klatki lewego górnego rogu
end;

Takie dane mogą się przydać przy ruchu "automatów"


I to by było tyle o GIGANTACH.

Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
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