Skocz do zawartości

Przebijalność


Rekomendowane odpowiedzi

Trudno? Głupoty gadacie :) . Dla przykładu, jak zrobić snajperkę (zakładamy, że nieważne jak daleko, strzał doleci od razu)?

i = 0; 
while( 1 )
{
  _x = x + lengthdir_x( direction, i );
  _y = y + lengthdir_y( direction, i );
  if ( colision_line( x, y, _x, _y /* bla bla bla... */ ) )
     break;
  else
     i += 1;
}
// tu, co sie stanie, jak doleci

Nic trudnego :) . A jeśli szybkość ma być ograniczona, to:

i = 0; 
while( 1 )
{
  _x = x + lengthdir_x( direction, i );
  _y = y + lengthdir_y( direction, i );
  if ( colision_line( x, y, _x, _y /* bla bla bla... */ ) ) || ( i >= maxspeed )
     break;
  else
     i += 1;
}
// tu, co sie stanie, jak doleci

Prościzna :D .

Odnośnik do komentarza
Udostępnij na innych stronach

Powpisuj tam bez sensu jedynki, jak będzie problem, to wtedy najwyżej może cię to obchodzić :D . Cóż, rada może nie najlepsza, ale jak ktoś jest leniwy, jak ja, to nawet te 20 sek. go zbawi :P .

 

A tak na serio - jeśli w notme wpiszesz jeden, znaczy, że pod uwagę mamy brać też ten obiekt, z którego ten kod jest wywoływany. W tym wypadku - wpisz 0.

Odnośnik do komentarza
Udostępnij na innych stronach

Oj, masz rację, nie zauważyłem, że jak to wstawimy w step, to już po pierwszym kroku wykona się akcja - bo w pierwszym breakiem można to było załatwić. Ale myślę, że dopisanie jednej linijki kodu nikogo nie zbawi :P .

 

Max, masz rację, ale w sumie, zazwyczaj to to strzał ze strzelby wyborowej, więc nie widzę problemu, gdyby spritem był jeden pixelek :D .

Odnośnik do komentarza
Udostępnij na innych stronach

wyskakuje mi unknown function on scrip collision line

Masz piętnaście lat, znajdź sobie poprawną nazwę tej funkcji, nie zajmie ci to dłużej niż 5-10 sekund... Poza tym, nie przepisywałeś tego komentarza bla bla?

Odnośnik do komentarza
Udostępnij na innych stronach

GML
i = 0;

while( 1 )

{

_x = x + lengthdir_x( direction, i );

_y = y + lengthdir_y( direction, i );

( collision_line(x,y,xprevious,yprevious,blockparent,blockparent,1 ) )

 

else

i += 1;

}

instance_destroy

 

i kiedy włączam grę to wyskakuje mi "else" variable name expected

Odnośnik do komentarza
Udostępnij na innych stronach

Oj Ty leniwy wieprzku, nie porównywałeś kodu swojego z podanym? Zjadłeś break i if.

GML
i = 0;

while( 1 )

{

_x = x + lengthdir_x( direction, i );

_y = y + lengthdir_y( direction, i );

if ( collision_line(x,y,xprevious,yprevious,blockparent,blockparent,1 ) )

break;

else

i += 1;

}

instance_destroy

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