Skocz do zawartości

Sprite Rottate


Remx

Rekomendowane odpowiedzi

Witam

 

Jakim poleceniem mozna obracać sprite w jakiejs postaci ?

 

chodzi mi konkretnie o takie cos ze postac ma w sobie w events: draw wiec robi sie niewidzialna i aby stała sie widzialna trzeba uzyc draw_sprite tylko teraz jak obracac taką teksturka :(

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Tak ten sprite to 8 klatek

tylko niewiem jak to zrobic by sie obracało tak aby po kloiknieciu na inn a postac ona nie przyjmowala ustawien poprzedniej bo mam tak obracam postac A naprzyklad w lewo i klikne na postac B i ona sie rowniez obroci w Lewo :(

 

myslałem o takim czymś

 

global.target.direction = direction - 90;

gdzie global.target to ID obiektu ktory zaznaczamy

 

bo w tym przypadku dziala i jak maymy direction = direction - 90 to dana postac obraca sie a inne nie ale gdy klikamy na inne to przyjmuja wartości tych ze obrotów

global.target.image_index = direction * image_number/360;

 

Klatki:

Góra, Prawa-Góra, Prawo, Prawo-Dół, Dół, Lewo-Dół, Lewo, Lewo-Góra.

 

Jak by ktoś był by miły napiać jak to wyglada

 

 

Serdecznie Dziekuje bo ja probowałem ale cos mi niechce działć :(

 

 

a obraca sie tegoż sprita strzałkami: Lewo, Prawo.

 

 

Pozdrawiam

 

 

 

 

ps: Nie moge tego draw wsadzic do innego obiektu bo w draw siedzi: wyswietlanie (pasek życia) i stystyyki a one niesą globalne bo gdybym zrobil je globalne to musiałbym zrobic ich okolo 2000 co by zalagowało kommpa odrazu i wiecej zabawy.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

draw_sprite(nazwa_sprita,direction/45,x,y);

 

Tylko, że masz źle zrobionego sprite'a, powinno sie zaczynac od prawo i isc w przeciwna strone do wskazowek zegara, zapamietaj, ze 0 stopni to prawo, przyda ci sie w matematyce i w ogole (90 - gora, 180 - lewo, 270 - dol).

Odnośnik do komentarza
Udostępnij na innych stronach

heh :) zaraz zobacze to co mi napisałes :) umnie 360 i 0 to gora :D

 

EDIT

 

e lipne to bo jak klikam myszka gdzies to postac sie obraca

a mi chodiz aby kazda postac obracala sie za pomoca strzalek lewo prawo

i miala jakos odseparowane zmienne by wszystko sie nie obracalo.

 

wszystkie postacie sa z jednego obiektu tworzone ale po postawieniu w roomie kazda postac jest usamodzieliona tym ze ma wlasne HP itp..

tak jak w RTS

................................................................................

................................

EDIT

................................................................................

................................

 

Więc tak rozwiązałem problem z separacją spritów ale jest nadal problem z obracaniem sie chce aby obracaly sie tylko gdy cisne kursor lewo lub prawo a nie gdy myszką klikam :)

Tutaj prezętuje przykład obracania.Example

 

Pozdrawiam

 

ps: jak ktoś potrafi i by pomógł to w tym przykładzie jest rsowanie lini od obj_A do obj_B ale chce aby ta linia byla rysowana w obszaże tyko do tego wyznaczonym wiecej informacji mozecie zobaczyc na przykładzie obrazka w example

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

No więc tak, otwórz obiekt o_troopers. Zostaw tylko event Left Button, a resztę wywal.

Teraz do step daj:

image_single = direction * image_number/360;


if( global.target == id )
{
   if ( keyboard_check(vk_left) )
   {
       direction += 90;
       keyboard_clear(vk_left);
   }
   else if ( keyboard_check(vk_right) )
   {
       direction -= 90;
       keyboard_clear(vk_right);
   }
   
   if ( keyboard_check(vk_up) )
   {
       speed = 5;
   }
   else if ( keyboard_check(vk_down) )
   {
       speed = -5;
   }
   else
   {
       speed = 0;
   }
}

 

a do draw:

draw_text(600,50,"TEST EXAMPLE");
draw_sprite(s_wojak,direction/90,self.x,self.y);


if( global.target == id )
{
   kierunek = degtorad( point_direction(x,y,mouse_x,mouse_y)+90 );
   dystans = point_distance(x,y,mouse_x,mouse_y);

   if ( dystans > 200 )
   {
       dystans = 200;
   }

   if ( direction == 0 )
   {
       if (radtodeg(kierunek) > 180 && radtodeg(kierunek) <= 270 ) kierunek=degtorad(180);
       if (radtodeg(kierunek) < 360 && radtodeg(kierunek) > 270 )  kierunek = degtorad (360);
   }
   else if ( direction == 90 )
   {
       if ( radtodeg(kierunek) > 270 && radtodeg(kierunek) <= 360 ) kierunek = degtorad(270);
       if ( radtodeg(kierunek) < 90 || radtodeg(kierunek) > 360 )  kierunek = degtorad(90);
   }
   else if ( direction == 180 )
   {
       if (radtodeg(kierunek) > 360 ) kierunek=degtorad(360);
       if (radtodeg(kierunek) < 180 )  kierunek = degtorad (180);
   }
   else if ( direction == 270 )
   {
       if (radtodeg(kierunek) < 180 ) kierunek = degtorad(90);
       if ( radtodeg(kierunek) < 270 && radtodeg(kierunek) > 180 )  kierunek = degtorad(270);
   }

   xx = x + sin(kierunek) * dystans;
   yy = y + cos(kierunek) * dystans;
   draw_arrow(x,y,xx,yy,10);
}

Trygonometria się kłania. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Tak chodziło mi o orginalny key;

 

 

Eh i znów mam problem

Chciałem przerobić to co napisałeś aby rysowało w 8 pozycjach czyli co 45stopni ale cuś mi to głupawo wygląda :/

 

 

chodzi mi o prawa strone jak byśmugł rzucić okiem na to:

 

EXAMPLE

 

Edit: zrobiłem tak że dopiero po ciśnięciu przyciska rysuje się strzałka ale ona lata sobie jak chce nie za kursorem :(

 

Dziekuje

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ę...