Skocz do zawartości

image_xscale jak odległość


XivroX

Rekomendowane odpowiedzi

Czyli po prostu skalować prostokątny sprite tak, aby wyglądał jak linia (tak odpowiednio się zeskalował, aby był tak duży, jak odległość od puntu B do C)?

To masz ten kod, co dałem :P

Powinie działać.

 

Ew. masz kod na linię z antyaliasingiem - ja się dzielę kodem, nie tak jak PsichiX (haha! :P)

 

GML
// draw_aa_init()

_surf = surface_create(64, 3);

surface_set_target(_surf);

draw_clear_alpha(c_black, 1);

 

draw_set_color(c_white);

draw_set_alpha(1);

draw_line(0, 1, 64, 1);

 

globalvar spr_aa_line;

spr_aa_line = sprite_create_from_surface(_surf, 0, 0, 64, 3, 1, 1, 0, 1, 0, 1);

surface_reset_target();

GML
// draw_line_aa(x1, y1, x2, y2, color, alpha);

//

// Drawing an anti-aliasing line

// by Dawidds =D

_dist = point_distance(argument0, argument1, argument2, argument3) / 64;

_dir = point_direction(argument0, argument1, argument2, argument3);

 

texture_set_interpolation(1);

draw_sprite_ext(spr_aa_line, 0, argument0, argument1, _dist, 1, _dir, argument4, argument5);

texture_set_interpolation(0);

 

Masz tu coś podobnego (obliczanie zmiennej _dist) :)

Odnośnik do komentarza
Udostępnij na innych stronach

___________________________________________
ERROR in
action number 1
of  Step Event
for object object1:

Error in code at line 2:
   image_xscale=point_distance(30,30,30,30)/sprite_width

at position 46: Division by 0.

Wyskakuje taki błąd... Za chwilę wrzucę na translatora to się dowiem czego dotyczy xD

 

Tego z antyaliasingiem jeszcze nie testowałem (za chwilę)

 

Edit: Aaaa... a więc "division by 0" znaczy "podział przez 0" już rozumiem xD

 

Edit2: Ale ciągle tego jakże trudnego zagadnienia rozwiązać nie mogę...

Odnośnik do komentarza
Udostępnij na innych stronach

BUAHAHAHAHAHA! Śmieję z siebie

Już naprawiłem kod.

Błąd był w tym, że nieodpowiednio ustawiłem funkcję point_distance()

Wszystkie argumenty były równe 30, a więc dystans był równy 0

Dzięki za pomoc. =D

Teraz działa

Edit: Pewnie przez następny tydzień się będę z tego śmiał. xD

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko sprecyzuję...

 

Uzjel, Pental - nie sprawdzaliście, a komentujecie ^_^

 

W draw_aa_init() tworzę sprite linii o szerokości 64. Po to tworzę to dynamicznie, aby móc se ustawić "jakość" tejże linii (właśnie to 64).

Zaś w draw_line_aa() wykorzystuje GM'owy system interpolacji pixeli, aby namalować odpowiednio obrócony sprite kreski, o odpowiedniej skali.

I wuala, czy jak to się tam pisze :P

 

PS: O, GMC nie koloruje globalvar :D

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