Skocz do zawartości

Płynne przemieszczenanie się do punktu


Nirvan

Rekomendowane odpowiedzi

Jeśli to ma być linia prosta, możesz korzystać z interpolacji.

Interpolacja:

GMLvar xs,ys,xg,yg,a:

xs = argument0 //x startowe

ys = argument1 //y startowe

xg = argument2 //x końcowe

yg = argument3 //y końcowe

a = argument4 //wartość przesunięcia po linii; od 0 do 1, w przeciwnym wypadku wyjdzie poza odcinek

x = 2*xs-(xg*a)

y = 2*ys-(yg*a)

Szybciej będzie działać, jeśli nie będziesz używać konstrukcji 'var', tylko po prostu we wzorze używaj argument[numer].

 

Rozkład normalny pozwoli Ci zrobić gładkie przechodzenie z punktu A do punktu B:

GMLreturn (1/sqrt(2*pi))*exp(-sqr(argument0)/2)

To wzór uproszczony na najbardziej znany wykres tej funkcji. Poszukaj więcej na Wikipedii.

Gratulacje, nie wiedzieć co to interpolacja, a tego pojęcia używać ;) . Metody numeryczne, jeśli już, będziesz miał na studiach / kółku matematycznym w liceum. I to w ogóle z tematem nie ma nic wspólnego. Najpierw przeczytaj sobie, co to funkcja...

A niby czemu?

E: To było do Sernata

Jeśli ci tak zależy na odpowiedzi, to załóż temat pt. "Dyskusja o zmiennych wbudowanych. Za i przeciw." Wtedy ci z pewnością odpowiem.

Odnośnik do komentarza
Udostępnij na innych stronach

Owszem, do tej pory używałem terminu "interpolacja" w sensie grafiki komputerowej (tzn. gradienty, jeśli wiesz o co mi chodzi) i nie bardzo mnie obchodziły inne znaczenia. Nie rozumiem natomiast, czemu to nie ma z tematem nic wspólnego.

Nie wiem jak zrobić dokłądne płynne przemieszczanie się do jakiegoś punktu

Przyjąłem, że chodzi o przemieszczanie się po odcinku, więc podałem kod, ktory ustali pozycję obiektu mając jako dane odcinek i liczbę oznaczającą, w jakim miejscu odcinka ma się znajdować obiekt.

Najpierw przeczytaj sobie, co to funkcja...

Nie rozumiem.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 11 miesięcy temu...

Sory że odkopuje temat ale walczę z tą interpolacją, kod od muuuuuczka zawsze zwraca wartość 0 a niby ma robić płynne przejście z punktu A do B

GML
return (1/sqrt(2*pi))*exp(-sqr(argument0)/2)

 

Dla przypomnienia:

Wartość zmiennej ma płynnie się zmienić do drugiej wskazanej.

Płynnej znaczy ma zaczynać się zmieniać powoli, rozpędzić do maksymalnej prędkości zmieniania,

potem w odpowiednim momencie zacząć zwalniać, tak aby stanęła na wskazanej przez siebie drugiej liczbie.

Odnośnik do komentarza
Udostępnij na innych stronach

Kurde tylko GM 8.0 mi dziala, coś się spiepszyło ze studio bo ikonka updatera jest i moge klikac nawet check updates ale zadne okno sie nie pokazuje ;|, nie mogę zobaczyć kodu

edit: od odpalilo studio po 15 minutach xd

 

Edit2:

Przerobiłem kod na skrypt do wykorzystania z każdą zmienną, może się komuś przyda:

 

GML (SmoothValue)
//argument0 - actual value

//argument1 - new value

//argument2 - speed

return (argument0 - argument1)/argument2;

 

Dla jasności jak użyć:

GML (step czy tam draw)
AktualnaWartosc-=SmoothValue(AktualnaWartosc, NowaWartosc, Predkosc);
Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 miesiące temu...

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