Skocz do zawartości

Drganie obiektu


neros

Rekomendowane odpowiedzi

Może zrobić coś w tym stylu że po 0,5 sekundy zmienia kierunek poruszania

pan iczigo już ten kod napisał

 

GML (create)
shake=0;

GML (step)
if(shake>0) shake-=1;

// ewentualnie

shake=max(0,shake-1);

GML (draw)
draw_sprite_ext(sprite_index,-1,x-sign(shake)+sign(shake)*floor(random(3)),y-sign(shake)+sign(shake)*floor(random(3)),image_xscale,image_yscale,image_angle,image_blend,image_alpha);

nie chcesz używać draw, "bo sprite zniknie"? wklej to i zobacz, że nie.

chcesz, żeby obiekt zaczął się trząść? ustaw shake na wartość dodatnią.

 

mój kod uznaję za najlepszy z tu dotychczas wymienionych (również od tego pod moim postem), ponieważ można go używać przy wbudowanych wartościach (typu x, hspeed, direction itp)

 

edit: poprawka

Odnośnik do komentarza
Udostępnij na innych stronach

Jak chcesz tylko efekt drgania, a nie drganie całego obiektu, to nie zmieniaj x i y tylko daj w draw:

GML
if shake

{

draw_sprite_ext(sprite_index, image_index, x+random(16)-8, y+random(16)-8, image_xscale, image_yscale, image_angle, image_blend, image_alpha);

}

else

{

draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha);

}

Przy czym shake to oczywiście zmienna definiująca czy drgania są czy nie.

Odnośnik do komentarza
Udostępnij na innych stronach

Dodatkowe drawowanie obciąża działanie gry, a drganie obiektu co z tego, że są kolizje jest właśnie realistycznie, a im mniejszy czas wywoływania alarmu w moim sposobie tym mniejsze drgania małe drgania obiektem i tak za wiele kolizji nie wywołają.

Odnośnik do komentarza
Udostępnij na innych stronach

twoje drganie najpewniej mogłoby zepsuć grę, jeśli z drgającym obiektem mają być jakieś kolizje.

tym bardziej, że ten obiekt w ogóle nie wraca na swoją pierwotną pozycję.

takie są fakty, deal with it

Odnośnik do komentarza
Udostępnij na innych stronach

Jaklub, ale moje drganie wraca na bierzącą pozycję, a to, czy kolizje mają występować czy nie to chyba zależy od założeń gry i jej twórcy ;>?

twoje wraca, iczigo nie.

 

jak coś ma drgać, to domyślam się, że kolizja jednak zachodzi. ale jak nie zachodzi, to śmiało można jechać z przemieszczaniem obiektów.

Odnośnik do komentarza
Udostępnij na innych stronach

Moje też wraca na poprzednią.

Bo kiedy najpierw przez 1 step jest direction 180 to po tym stepie przez kolejny 1 step direction to 0.

Więc po każdym wystrzale w danym kierunku, obiekt wraca po lini wystrzału na pozycję startową.

Odnośnik do komentarza
Udostępnij na innych stronach

Moje też wraca na poprzednią.

Bo kiedy najpierw przez 1 step jest direction 180 to po tym stepie przez kolejny 1 step direction to 0.

Więc po każdym wystrzale w danym kierunku, obiekt wraca po lini wystrzału na pozycję startową.

czy ty w ogóle odpaliłeś, co ty zrobiłeś?

TO NIE DZIAŁA, choć "niby" powinno

 

tak więc proszę cię, zamknij jadaczkę

Odnośnik do komentarza
Udostępnij na innych stronach

Działa i koniec jutro przyśle filmik.

po co filmik? nie działa i tyle. i po krótkim przeglądnięciu (gee, ale słowo) twojego kodu stwierdzam, że działać nie może.

jeśli kier jest nastawiony na 1, przestawi się na 0 i zrobi to, co trzeba. ok. tylko problem w tym, że interpreter jedzie dalej i OD RAZU wykonuje także to, co powinno być wykonane tylko wtedy, gdy kier jest nastawiony na 0.

Odnośnik do komentarza
Udostępnij na innych stronach

Faktycznie Jaklub ma rację. Kod nie działa jak powinien, a obiekt nie wraca na swoje miejsce. Tak naprawdę w tym kodzie nastepuje tylko wylosowanie kierunku, potem obrócenie go o 180 stopni i przesunięcie w tym kierunku.

Kier jest = 0 właściwie cały czas jesli idzie o wykonanie kodu.

Dla wyjaśnienia obrazek tego co tak naprawdę się wykona i ma znaczenie:

gmlol.jpg

Teraz dopisek dla tłuków :D.

Interpreter wchodzi do tego co ma w alarmie.

Kier = 1
{
  Losuje kierunek
  Ustawia speed na 2 // ustawienie speeda nie oznacza przesuniecia obiektu w danym momencie, a dopiero na koncu klatki.
  zmiana kier na 0
}
Oho? Kier jest juz 0 a wiec
{
  odwracamy kierunek do tylu
  ponownie ustawiamy speed na 2
  zmiana kier na 1
}
I za 2 stepy powtorz to samo

 

A przesuniecie wzgledem wartosci zmiennej speed nastąpi gdzieeeś tam pootem przed wejsciem w nową klatkę :P

 

Aczkolwiek ciemnotę ludzką w tym przypadku można łatwo naprawić. Przesuwając alarm[0]=2 na samą górę skryptu i dopisując exit; na koncu pierwszej instrukcji warunkowej. :P

Tak czy siak wolę swoją metodę ^^

 

Morał: Nauczmy się podstawowych podstaw programowania/GM'a i tego, jak komputer "czyta" nasz kod przed dawaniem rad innym. :]

 

PS: Twórco tematu, żebyś nie musiał się przebijać przez masę bezużytecznych dla ciebie postów tutaj podaję link do postów z rozwiązaniem.

https://forum.gmclan.org/index.php?s=&s...st&p=334521 - ten post i jeden pod nim to 2 różne, aczkolwiek dobre rozwiązania.

Odnośnik do komentarza
Udostępnij na innych stronach

po co komplikować sobie życie, jeśli chodzi o dosłownie parę pikseli drgań?

owszem, jeśli chodzi o kilkadziesiąt pikseli, to robi różnicę, ale o tę np. trójkę nie ma co sobie głowy zawracać.

 

poza tym, jak to zawsze bywa, autor już nie wejdzie do tematu ze swoim pytaniem, w którym jest ponad 10 postów.

Odnośnik do komentarza
Udostępnij na innych stronach

Znacie się na trygonometrii choć trochę? Tak w ramach lekcji:

https://gmclan.org/up152_12_081210_gm8_pomiatacz.html

 

Tymon, zaczynasz tracić w moich oczach. Szpaner się z ciebie robi, a rozwiązanie jest śmiesznie przesadzone. Zbędne linijki kodu, żeby osiągać nie wiele różniący się efekt od tego z podanych wcześniej PROSTYCH sposobów. Raczej wątpię, żeby autor chciał teraz poświęcać czas na rozumienie "dlaczego sposób tymona jest taki dziwny?" skoro sam nie wiedział jak zrobić to cholernie proste drganie.

 

Matematyczna inkwizycja do boju!

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