neros Opublikowano 30 Listopada 2010 Udostępnij Opublikowano 30 Listopada 2010 Witam, mam problem, postanowiłem dodać do gierki tzw. drganie pewnego obiektu. Jak zrobić coś w stylu "shake" obiektu na określony czas po kolizji z obiektem 'hero'? Proszę o pomoc, dzięki z góry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
iczigo Opublikowano 30 Listopada 2010 Udostępnij Opublikowano 30 Listopada 2010 W create GML kier=1 alarm[0]=30 W alarm[0] GML if(distance_to_object(hero)<10) { if (kier=1) { direction=random(360) speed=2 kier=0 } if (kier=0) { direction-=180 speed=2 kier=1 } } alarm[0]=30 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 1 Grudnia 2010 Udostępnij Opublikowano 1 Grudnia 2010 To się będzie kręcił. Zamiast zmiany direction manipuluj x i y. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Morti Opublikowano 1 Grudnia 2010 Udostępnij Opublikowano 1 Grudnia 2010 Może zrobić coś w tym stylu że po 0,5 sekundy zmienia kierunek poruszania Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 1 Grudnia 2010 Udostępnij Opublikowano 1 Grudnia 2010 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 Więcej opcji udostępniania...
Adriann Opublikowano 1 Grudnia 2010 Udostępnij Opublikowano 1 Grudnia 2010 GML x=random(2)+50 y=random(2)+50 Może takie cuś Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 1 Grudnia 2010 Udostępnij Opublikowano 1 Grudnia 2010 GML x=xstart+random(16)-8; y=ystart+random(16)-8; I to w step dać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
M@ILOSZ Opublikowano 2 Grudnia 2010 Udostępnij Opublikowano 2 Grudnia 2010 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 Więcej opcji udostępniania...
iczigo Opublikowano 6 Grudnia 2010 Udostępnij Opublikowano 6 Grudnia 2010 Po co drgać spritem, lepiej całym obiektem oto przykład zrobiony moim sposobem. https://gmclan.org/up6286_11_przyklad.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MXQ Opublikowano 6 Grudnia 2010 Udostępnij Opublikowano 6 Grudnia 2010 lepiej samym spritem przez nieoczekiwane kolizje jakie mogą nastąpić Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
iczigo Opublikowano 6 Grudnia 2010 Udostępnij Opublikowano 6 Grudnia 2010 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 Więcej opcji udostępniania...
Jaklub Opublikowano 6 Grudnia 2010 Udostępnij Opublikowano 6 Grudnia 2010 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 Więcej opcji udostępniania...
M@ILOSZ Opublikowano 7 Grudnia 2010 Udostępnij Opublikowano 7 Grudnia 2010 @iczigo: Nie obciąża gry, bo nie jest dodatkowe, zobacz na mój kod: albo jest rysowany sprite drgający, albo zwykły. Tak czy siak GM musi go narysować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 7 Grudnia 2010 Udostępnij Opublikowano 7 Grudnia 2010 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 ;>? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 7 Grudnia 2010 Udostępnij Opublikowano 7 Grudnia 2010 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 Więcej opcji udostępniania...
iczigo Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 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 Więcej opcji udostępniania...
MXQ Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 tak, a co jeśli po drodze uderzy w jakiś objekt? Wtedy zmieni się jego położenie. Dlatego proponuję drgać spritem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
iczigo Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 MXQ napisałeś coś tempego. Jeśli coś wali w inny obiekt nie zmienia położenia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MXQ Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 wtedy zmieni sie jego położenie startowe "tępaku" :) @up "tempego" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 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 Więcej opcji udostępniania...
iczigo Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 Odpaliłem działa jak należy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 ten układ "nieco" się różni od początkowego po prostu zrobiłeś zły skrypt, i jeszcze kłamiesz, że działa. protip: GML x=xstart; y=ystart; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
iczigo Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 Działa i koniec jutro przyśle filmik. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 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 Więcej opcji udostępniania...
iczigo Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 Ja mówie o tym ciągle, to działa: https://gmclan.org/up6286_11_przyklad.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 drga, ale robię szum o to, że na miejsce nie wraca. edit: a, i skrypt nie działa, tak jak byś chciał. a to jest problem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 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: 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 Więcej opcji udostępniania...
Tymon Opublikowano 8 Grudnia 2010 Udostępnij Opublikowano 8 Grudnia 2010 Znacie się na trygonometrii choć trochę? Tak w ramach lekcji: https://gmclan.org/up152_12_081210_gm8_pomiatacz.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 9 Grudnia 2010 Udostępnij Opublikowano 9 Grudnia 2010 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 Więcej opcji udostępniania...
pablo1517 Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę