Skocz do zawartości

Celownik laserowy...


Nicolas

Rekomendowane odpowiedzi

Mam problem nie wiem jak zrobic taki celownik laserowy:

-linia ciągla widoczna

-zatrzymywanie lini na kazdym objekcie czyli lecido tego objectem ale ten object zaslania jej droge dalej // to by bylo latwe

 

 

Mam nadzieje ze napisalem to dobrze i mnie zrozumiecie...

 

 

Help...

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

rysuj_laser(x,y,x2,y2,obiekt,kolor)

Obiekt to nazwa obiektu z ktorym ma byc liczona kolizja.

 

Źródło skryptu:

var col, ob, x2, y2, dir, dis, last;

col = draw_get_color();
draw_set_color(argument5);

dir = point_direction(argument0,argument1,argument2,argument3);
dis = point_distance(argument0,argument1,argument2,argument3);

x2 = argument2;
y2 = argument3;

last = 0;

while ( true )
{
   ob = collision_line(argument0,argument1,x2,y2,argument4,1,1);   
   if ( ob )
   {
       if ( last != ob )
       {
           last = ob;
           x2 = ob.x;
           y2 = ob.y;
           dis = point_distance(argument0,argument1,x2,y2)-1;
       }
       else
       {
           dis -= 1;
           x2 = argument0 + sin( degtorad ( dir + 90 ) ) * dis;
           y2 = argument1 + cos( degtorad ( dir + 90 ) ) * dis;
       }
   }
   else
   {
       if ( last )
       {
           while ( true )
           {
               dis += 1;
               x2 = argument0 + sin( degtorad ( dir + 90 ) ) * dis;
               y2 = argument1 + cos( degtorad ( dir + 90 ) ) * dis;
               ob = collision_line(argument0,argument1,x2,y2,argument4,1,1);
               if ( ob )
               {
                   dis -= 1;
                   x2 = argument0 + sin( degtorad ( dir + 90 ) ) * dis;
                   y2 = argument1 + cos( degtorad ( dir + 90 ) ) * dis;
                   break;
               }
           }
       }
       draw_line(argument0,argument1,x2,y2);
       break;
   }
}
draw_set_color(col);

Odnośnik do komentarza
Udostępnij na innych stronach

No tak, z tym, że "programowanie nie polega na tym, żeby coś działało. Programowanie to tworzenie w jak najprostrzy i najwydajnieszy sposób" - to cuś wyłożył nam procesor na pierwszej infie 2,5 roku temu... :)

 

Taki mały komenatarz do postów ponizej:

Procesor  ? To one mówią  ?

Tak mówią :P . Na psora od informatyki mówimy "procesor" lub "wojtuś"(na imię ma Zbigniew)

jest prostsze od tego codu ranmy

Pisząc "w najprostszy sposób" chodziło mi o w miare najkrótszy i najwydajniejszy sposób.

jesli cos dziala to znaczy że jest wydajne

No jeśli działa to jest wydajne ale chodzi o w miarę możliwości najwydajniejszy sposób.

Odnośnik do komentarza
Udostępnij na innych stronach

"programowanie nie polega na tym, żeby coś działało. Programowanie to tworzenie w jak najprostrzy i najwydajnieszy sposób"

Wydaje mi sie ze to co ja napisalem jest prostsze od tego codu ranmy :D a co do wydajnosci to jesli cos dziala to znaczy że jest wydajne :D ;)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

No i co, że prostsze. Nie liczy się sposób, ale efekt końcowy, więc zrób przykład i pokaż jak to będzie wyglądało twoim sposobem. :)

 

Mój skrypt jest tak długi z jednego powodu. GM do najszybszych wirtualnych maszyn nie należy, więc trzeba było wymyśleć jakieś sposoby przyśpieszające liczenie punktu docelowego, a i tak to co wymysliłem na szybko jest tylko w 99% dokładne, a zoptymalizować zapewne można jeszcze lepiej. Dokładne wyliczanie x2 i y2 zajmuje dwa/trzy razy mniej kodu, ale wtedy przy wielu obiektach dzielących postać od celownika powoduje poważne spadki prędkości. Mój sposób przyśpiesza liczenie czterokrotnie.

Odnośnik do komentarza
Udostępnij na innych stronach

Każdy może sie pomylić :P Ja np. pomyliłem sie w temacie z tą animacją Rowera a dokładniej, myślałem że Rower ma zamiar robić taką gre :P :P :P Tylko nie wypominajcie mi tego :lol2: ;)

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