Skocz do zawartości
  • Ogłoszenia

  • Gdzie świętować urodziny GMCLANu   26 użytkowników zagłosowało

    1. 1. Gdzie świętować urodziny GMCLANu


      • Warszawa (bo w centrum)
      • Szczecin (bo tam mieszka Ranma i narodził się GMCLAN)

    Żeby zagłosować w tej ankiecie, prosimy się zalogować lub zarejestrować. Zobacz temat
I am vader

Przyklejanie się strzał do ciała

Rekomendowane odpowiedzi

I am vader    24

Witajcie,

 

przedstawiam Wam dzisiaj przykład pokazujący jak zrobić aby strzały np. z łuku, przyklejały się do postaci i obiektów które trafiają. Poniższy przykład pokazuje jak zrobić to wygodnie i optymalnie. Używa ds_list i rysowania strzał wewnąrz obiektu który oberwał aby zminimalizować obciążenie. To łatwy i wydajny przykład, napisany oryginalnie dla Ignatusa. Jeżeli macie jakieś pytania bądź uwagi, coś co można poprawić, dajcie znać!

 

Przykład powstał dla GM 1.4 ale powinien być kompatybilny z GM 2.0

 

Download / Pobieranie:

Naciśnij tutaj

 

 

Sposób wykorzystania w Twojej grze!

 

Aby przykład zadziałał w Twojej grze wklej poniższy kod w create obiektu który ma mieć przyklejalne strzały:

GML
ArrowAngle = ds_list_create();

ArrowDist = ds_list_create();

ArrowHitAngle = ds_list_create();

Następnie wklej to w Destroy:

GML
ds_list_destroy(ArrowAngle);

ds_list_destroy(ArrowHitAngle);

ds_list_destroy(ArrowDist);

A ten kod w Draw:

GML
var loop = ds_list_size(ArrowAngle);

for(var i=0;i<loop;i++){

var xx = x + lengthdir_x(ArrowDist[| i],image_angle+ArrowAngle[| i]);

var yy = y + lengthdir_y(ArrowDist[| i],image_angle+ArrowAngle[| i]);

var rot = image_angle+ArrowHitAngle[| i];

draw_sprite_ext(SprArrow,0,xx,yy,1,1,rot,c_white,1);

}

 

Dodanie strzały do ciała

W evencie kolizji z obiektem bądź w skrypcie emulującym kolizję, gdzie "col" to ID obiektu(można zamienić na other. w evencie kolizji)

GML
ds_list_add(col.ArrowAngle,point_direction(col.x,col.y,x,y)+(360-col.image_angle));

ds_list_add(col.ArrowHitAngle,image_angle-col.image_angle);

ds_list_add(col.ArrowDist,point_distance(x,y,col.x,col.y));

 

Pamiętaj że utworzy to sztuczną strzałę w ciele, więc jeżeli nie potrzebujesz już tej strzały usuń ją za pomocą

GML
instance_destroy();

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Uzjel    11

Fajne i dobrze zrobione.

 

PS. show_debug_message w drawie :>

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
I am vader    24
Fajne i dobrze zrobione.

 

PS. show_debug_message w drawie :>

 

Już poprawiam :D

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Ignatus    7

Genialna robota-dokładnie czegoś takiego potrzebowałem a walczyłem z tym od niepamiętnych czasów-zawsze coś nie działało-a tutaj idealnie.Dzięki

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×