Skocz do zawartości

Zmiana sprite'a w 3D w zależności od kamery


sateq

Rekomendowane odpowiedzi

Witam wszystkich na forum

 

Ostatnio bawię się w GM w tworzenie FPS-a z postaciami opartego na sprite'ach (coś jak w np.Doomie), opierając się na przykładzie z YoYo games. I mam problem z jedną rzeczą. Otóż, jak wiadomo w wielu grach tego typu trupy wrogów są odwrócone cały czas do nas nogami. Zastanawiam się, jak to naprawić. Chciałbym znać kod, który zmieniałby w zależności od kierunku kamery sprite'a z postacią(dzięki czemu trup by się "obracał"). Samo podstawienie umiałbym zrobić,ale nie mam pomysłu na zależności kierunków, oraz na sam kod, żeby to wszystko poprawnie wyglągało. Jeśli ktoś widział polską grę Target, to wie, o co mi chodzi. Przeszukiwałem całe forum,i nic na ten temat nie znalazłem. Z góry dziękuję za ewentualną pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Tyle ze chlopak nic z tego nie zrozumial ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Tyle ze chlopak nic z tego nie zrozumial ;p

 

I tu przyznam Ci racje :D Wiem,że nie jestem profesjonalistą, więc jeśli można, to prosiłbym jaśniej.

 

To jest kod na teksturę:

var text;
     {text = sprite_get_texture(text,0);
     d3d_draw_wall(x-9*global.camsin,y-10*global.camcos,15,
                   x+9*global.camsin,y+10*global.camcos,-8,text,1,1);}

 

chciałem zrobić wyświetlanie innej tekstury za pomocą If, ale w tym sęk, że nie mam pomysłu na wyliczenie wartości widoku kamery względem obiektu.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem jak to jest z gm. Wygląda to mniej więcej tak: Obliczasz wektor kamera a obiekt(np: jego środek), następnie możesz obliczyć kąt między poprzednim kierunkiem obiektu a tym nowym obliczonym i obrócić o dany kąt obiekt.

p.s nie wiem jakie tam są funkcje wspierające tego typu działania. Jak będę wieczorem napisze Ci jakiś pseudo kod.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki, ale dalej wiele z tego nie rozumiem. Nie potrzebuję obracać obiektu, ponieważ pozycję wyświetlania mam dobrze obliczoną. Chodzi mi tylko o podmienianie samego obrazka tekstury w zależności od kierunku kamery, oraz tego obiektu.

 

edit:

Już sam doszedłem, dzięki mimo wszystko za pomoc.

Znalazłem w końcu gdzieś przykład na to (sory ale już nie pamiętam gdzie).

W create tekstury dałem:

a=point_direction(x,y,kamera.x,kamera.y);
widok=a*8/360;

 

Potem w Draw:

{
  var text;
  if widok>=0 and widok<2 then
  {text = sprite_get_texture(sp_bok1,0);
  d3d_draw_wall(x-9*global.camsin,y-10*global.camcos,15,
                x+9*global.camsin,y+10*global.camcos,-8,text,1,1);}
                
else if widok>=2 and widok<4 then
  {text = sprite_get_texture(sp_tyl1,0);
  d3d_draw_wall(x-9*global.camsin,y-10*global.camcos,15,
                x+9*global.camsin,y+10*global.camcos,-8,text,1,1);}
                
else if widok>=4 and widok<6 then
  {text = sprite_get_texture(sp_bok2,0);
  d3d_draw_wall(x-9*global.camsin,y-10*global.camcos,15,
                x+9*global.camsin,y+10*global.camcos,-8,text,1,1);}

else if widok>=6 and widok<8 then
  {text = sprite_get_texture(sp_przod,0);
  d3d_draw_wall(x-9*global.camsin,y-10*global.camcos,15,
                x+9*global.camsin,y+10*global.camcos,-8,text,1,1);}


}

 

To jest wzór na 4 obrazki,i wymaga dopracowania, ale jakoś pomału się tym zajmę. Myślę, że temat jest do zamknięcia.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...