Skocz do zawartości

Przyklejanie się strzał do ciała


Rekomendowane odpowiedzi

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();
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ę...