ammate Napisano Wrzesień 5, 2007 Zgłoś Share Napisano Wrzesień 5, 2007 Napisałem sobie wyświetlanie grafiki izometrycznej opisaną w wątku Teraz chciałem sobie dorobić ustawienie/poruszanie postaci po warstwie pierwszej. Wymyśliłem chyba słusznie , że postać to nic innego jak kafelek i trzeba ją tak samo wyświetlać. No i jeśli postać ma takie same rozmiary jak kafelek to działa Jest tylko jeden problem. Jeśli kafelek ma rozmiar 36x36 a postać 36x54 to źle ją pokazuje. Wymyśliłem takie coś. Dziele postać na dwie części i wyświetlam dolną część przy Z = 1 a górną dla Z = 2. Działa ok, mam jednak pytanie czy może jest jakiś inny sposób? Link do komentarza Udostępnij na innych stronach More sharing options...
krajew4 Napisano Wrzesień 5, 2007 Zgłoś Share Napisano Wrzesień 5, 2007 Co to znaczy 'zle ja pokazuje'? My life for Aiur! Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Wrzesień 5, 2007 Zgłoś Share Napisano Wrzesień 5, 2007 tak jest bardzo prosto zamiast dzielić postać na 2 obrazki wyświetlasz 1 przesunięty odpowiednio a jest na to prosty sposób zawsze wyświetlasz Y wierszy kafelków i X kolumn wiec postać musisz wyświetlić w pozycji : ypos := (y*wysokosc_kafelka\2)-wysokosc_postaci; druga pozycje analogicznie oczywiście to jest wzór dla rzutu prostego nie izometrycznego ale łatwo jest go przerobić @krajew4 chodzi tu o to ze mu sie postac przesowa w dol "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
ammate Napisano Wrzesień 5, 2007 Autor Zgłoś Share Napisano Wrzesień 5, 2007 tak jest bardzo prosto zamiast dzielić postać na 2 obrazki wyświetlasz 1 przesunięty odpowiednio a jest na to prosty sposób zawsze wyświetlasz Y wierszy kafelków i X kolumn wiec postać musisz wyświetlić w pozycji : ypos := (y*wysokosc_kafelka\2)-wysokosc_postaci; druga pozycje analogicznie oczywiście to jest wzór dla rzutu prostego nie izometrycznego ale łatwo jest go przerobić @krajew4 chodzi tu o to ze mu sie postac przesowa w dol Przyznam, że nie za bardzo to rozumiem. Moje wzory na wyświetlenie kafelków/postaci: // sx = ((x-y) * (width/2)) - mx // sx - Współrzędna x pola na ekranie. // x - Współrzędna x pola na mapie. // y - Współrzędna y pola na mapie. // width - Szerokość (width) kafelka (grafiki) // mx - Pozycja mapy (współrzędna x) int widthTile = 36; int width = widthTile / 2; int mx = 180; int sx = ((x - y) * width) + mx; // sy = ((x + y) * (height/2)) - my // sy - Współrzędna y pola na ekranie. // x - Współrzędna x pola na mapie. // y - Współrzędna y pola na mapie. // height - Wysokość (height) kafelka (grafiki) // my - Pozycja mapy (współrzędna x) int heightTile = 18; int height = heightTile / 2; int my = 100 - (heightTile * layer); int sy = ((x + y) * height) + my; Czy byłbyś wstanie wytłumaczyć i napisać jak to poprawić ? Jest to rzut izometryczny. Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Wrzesień 6, 2007 Zgłoś Share Napisano Wrzesień 6, 2007 ehh zakladamy ze wyswietlasz postac w pkt (X,Y) i twoj problem polega na tym ze postac jest za "nisko" wiec po prostu odejmiej wysokosc postaci od zmiennej Y pkt (X,Y-wysokosc_postaci+wysokosc_kafla) u ciebie to bedzie (X,Y-54+36) wzor ktory ja podalem dziala wtedy jesli postac ma byc caly czas na srodku ekranu (ten z wczesniejszego posta, w tym moze byc w dowolnym miejscu). Nie wiem ja ci to prosciej wytlumaczyc... "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
ammate Napisano Wrzesień 6, 2007 Autor Zgłoś Share Napisano Wrzesień 6, 2007 ehh zakladamy ze wyswietlasz postac w pkt (X,Y) i twoj problem polega na tym ze postac jest za "nisko" wiec po prostu odejmiej wysokosc postaci od zmiennej Y pkt (X,Y-wysokosc_postaci+wysokosc_kafla) u ciebie to bedzie (X,Y-54+36) <-- liczby z twojego 1 posta wzor ktory ja podalem dziala wtedy jesli postac ma byc caly czas na srodku ekranu (ten z wczesniejszego screenposta, w tym moze byc w dowolnym miejscu). Nie wiem ja ci to prosciej wytlumaczyc... Chyba opiszę to szerzej bo Twoja wskazówka nie działa u mnie Mam czytanie mapy: for (int z = 0; z < 10; ĘĘB [HfCĄ(( int number = reader.ReadInt32() - 1XLVKHH[X$ŹśzźŹŁ')B [^YH^Y L^YĘĘBf\"BfC\0(ĄąŹŹ( { // Rysowanie kafelkK[[^HXXLVK^YpFĆRF ĆRFĆTĆ7EśćFWÓźźĄĄŃź // sx - Współrzędna x pola na ekX[YKH<HH&Rw7;7'ŚFćń(źźŃM(width) kafelka (grafiki) // mxHXHXH <H BgBvGFFĆR3cB ŃŃĄQąź(( int sx = ((x - y) * width) + mx; HH JH ZYJHH^B7w7;7'ŚFćĆćV(źź]ąĄ mapie. // y - Współrzędna y poXHHXYKZYHVvBśfVĆśw& amp;fśAĄ( t heightTile = 18; int height ZY[H [^HHZYFĆRĆW#B7 ĄĄŹ((ŃąĄcs, new Point(sx, sy)); } [YHXK7F2w&72ĆW\"\0(($qnj,ŁĄśĘŁzvŁŚ'hŹ,(2jvśŹaś0źek?vDWJ?OW)BXXYXĘX[[K[VW\& quot;bb333łF2b333łF(( Ń((( if (layer > 2 || layer == 0) re]H ^JH YJHH^7w7;7'ŚFćĆćV&ćRą(źź]pola na mapie. // width - Szerokość (width) kaf[H YZJB^HXHXH & lt;HBvGFFĆR3cBvGFeŃĄQąź(( (((int)(this.x - this.y) * width) + mx; // sy = JH ZYJHH^BHH<HGĆćV&ćRw7;7'ŚFćĆć(źź]ą( // height - Wysokość (height) kafelka (grafiki) ^HHXHXH <H B[ZYEFĆRBVvBVvEFĆR#\0ĄĄĄŃQąĄą(( = (int)((this.x + this.y) * height) + my; if ^YOHJB<rG& amp;tvRr77b!ą((źź ( g.DrawImage(img, sx, sy); } } $ĄśśĘŁyĆZw)k7Śś^aś0źek?ęĘ<RcOW)BY HH HHb333łĆW\"&WGW&\0((źźĄĄŃź( // sx - Współrzędna x pola na ekranie. // x <HHHXYKHH<GĆćRvGF7ŚW&śnbvGFśąĄ(źźAĄx) int widthTile = 36; int width =Y[H[^H [bF2F2vGF7ĄŹĄĄĄ ź(źź] pola na ekranie. // x - Współrzędna x pola na XYKHH<HHHHXYKVvBw6śnbVvBśfVĆśw&fś\0źźAĄ(ĄhtTile = 18; int height = heightTile / 2; [^HH ZY[H [ [^YN[7BF2F2VvBrŃ%Ą( Jakieś sugestie ? Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Wrzesień 6, 2007 Zgłoś Share Napisano Wrzesień 6, 2007 Po prostu bez komentarza mam ci 3 raz napisać to samo ? w Metodzie która rysuje cala postać zamień ostatnia linijkę na g.DrawImage(img, sx, sy-54+36); jeśli wymiary postaci podałeś dobre to postać powinna się wyświetlać poprawnie. I na Boga zacznij myśleć!!! A nie czekaj na gotowce "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
ammate Napisano Wrzesień 7, 2007 Autor Zgłoś Share Napisano Wrzesień 7, 2007 Po prostu bez komentarza mam ci 3 raz napisać to samo ?w Metodzie która rysuje cala postać zamień ostatnia linijkę na g.DrawImage(img, sx, sy-54+36); jeśli wymiary postaci podałeś dobre to postać powinna się wyświetlać poprawnie. I na Boga zacznij myśleć!!! A nie czekaj na gotowce Napisałem jeszcze raz bo Twoja odpowiedź nie jest dobra Postać przy "sx, sy-54+36" jest rysowana tak: Link a powinna być rysowna tak: Link Pobawiłem się trochę sx, sy odejmując wartości i udało się mi mniej więcej ustawić tą postać: "sx-3, sy-54+33" Link Jednak nie jest ona idealnie rysowana. Poprawnie rysowana jest jak rysuje najpierw górę potem dół: Link Jakieś sugestie? Link do komentarza Udostępnij na innych stronach More sharing options...
Gifanonim Napisano Wrzesień 7, 2007 Zgłoś Share Napisano Wrzesień 7, 2007 szczeze ja na tych SSach nic nie widze ;P zrob tak je zeby postac byla w jednym miejscu i bylo dobrze widac co jest nie tak "Bogowie to bugi ludzkich umysłów" Gifanonim ® Link do komentarza Udostępnij na innych stronach More sharing options...
Nvm Napisano Wrzesień 7, 2007 Zgłoś Share Napisano Wrzesień 7, 2007 Chodzi mu o to, że postać lekko zapada się w ziemię. Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.