Moho Opublikowano 9 Stycznia 2013 Udostępnij Opublikowano 9 Stycznia 2013 Hi, Męczący problem, nie wiem już co począć, do rzeczy: Chcę zrobić spadającego bricka (pułapka), zrobiłem to najprościej po swojemu, mam 4 obiekty. b1, b2, b3 i b4 b1 to brick który wykrywa pozycje gracza: GML Step: if point_distance(x,y,objplayer.x,objplayer.y) < 200 instance_change(b2,false); b2 to brick z animacją trzęsienia się (zanim spadnie): GML Animation End: instance_change(b3,false); b3 to brick który po prostu spada i z kolizją rozpada się na kilka kawałków: GML Create: ran=random(8); GML Kolizja: do ran=instance_create(x,y,b4); until instance_number(objtrapdes)=16 instance_destroy(); b4 to mały kawałek rozwalonego bricka GML Create: alarm[0]=60; motion_set(random(360),2+random(6)); GML Alarm[0]: instance_destroy(); Działa, ale zwiesza grę w momencie kiedy postawię kilka bricków (właściwie to dwa wystarczą). W momencie kiedy pierwszy upada i się rozbija na kawałki i w mniej więcej sekundę po rozbiciu upada drugi (co już nie zdąży się rozwalić) gra się zwiesza. Ktoś pomoże? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
sagi Opublikowano 9 Stycznia 2013 Udostępnij Opublikowano 9 Stycznia 2013 przepraszam jesli się mylę, ale nie mógłbyś zamiast pętliuzyć zwykłego if'a? chyba że chcesz aby wszystko stalo się w 1/30 lub 1/60 sekundy? Ale moze się okazać że Twój komputer tego nie wytrzyma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Moho Opublikowano 10 Stycznia 2013 Autor Udostępnij Opublikowano 10 Stycznia 2013 Nie bardzo rozumiem jakbym miał to zrobić korzystając z warunku if. Z resztą, pewnie się da, ale od czego są właśnie takie pętle. Problem w tym że ona wcale nie jest wymagająca, gdzieś indziej jest błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Stycznia 2013 Administratorzy Udostępnij Opublikowano 10 Stycznia 2013 Bo jak tych obiektów bedzie 17 albo 18, to sie pętla zawsze zawiesi. GML until instance_number(objtrapdes)>=16 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
sunflower Opublikowano 10 Stycznia 2013 Udostępnij Opublikowano 10 Stycznia 2013 A czy mu czasem nie chodzi o to, żeby stworzyć 16 kawałków *za każdym razem* kiedy jakiś brick zderzy się z czymś i się efektownie rozpryśnie? Co wówczas by oznaczało, że zamiast "do ... until" albo innego mechanizmu, który efektywnie by powodował, że z każdym zderzeniem liczba kawałków jest *uzupełniania* do 16 w skali całej planszy (w szczególności, jeśli wcześniejsze jeszcze nie zostały "sprzątnięte") należy użyć czegoś, co stworzy 16 kawałków na kolizję? Czyli w praktyce stary dobry repeat? GML repeat (16) { ran=instance_create(x,y,b4); //po co przypisujesz tutaj ran, tak swoją drogą? O.o' } instance_destroy(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Stycznia 2013 Administratorzy Udostępnij Opublikowano 10 Stycznia 2013 tez tak myslałem, ale ma dwie inne nazwy obiektów: b4, objtrapdes, wiec sie nie zgadza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Moho Opublikowano 10 Stycznia 2013 Autor Udostępnij Opublikowano 10 Stycznia 2013 objtrapdes = to b4, po prostu to pierwsze mam w swoim kodzie, a b1, b2 i tak dalej to tutaj napisałem żeby było jaśniej. Tak btw, jak zrobić odwrócenie wartości y? np przy kolizji O_o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Stycznia 2013 Administratorzy Udostępnij Opublikowano 10 Stycznia 2013 W jakim sensie odwrócenie? Że będzie w tej samej odległości od dołu ekranu co wcześniej był od góry? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 10 Stycznia 2013 Udostępnij Opublikowano 10 Stycznia 2013 Ja czegoś tu nie rozumiem, po co robić taką rzecz na 4 różnych obiektach? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Moho Opublikowano 10 Stycznia 2013 Autor Udostępnij Opublikowano 10 Stycznia 2013 Ja czegoś tu nie rozumiem, po co robić taką rzecz na 4 różnych obiektach? To sobie rób na jednym ; ) Ja robię po swojemu. Gnysek, chodzi o to że mam obiekt który sobie leci y+=2; i przy kolizji ma lecieć w drugą stronę eh... coś jak: hspeed=7; i przy kolizji hspeed*=-1 tylko z y. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 10 Stycznia 2013 Udostępnij Opublikowano 10 Stycznia 2013 lol -2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bedziom Opublikowano 10 Stycznia 2013 Udostępnij Opublikowano 10 Stycznia 2013 hspeed=!hspeed? ustaw bounce od tego obiektu chociażby. jak to na y dać to nie wiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Moho Opublikowano 10 Stycznia 2013 Autor Udostępnij Opublikowano 10 Stycznia 2013 No tylko na y... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 10 Stycznia 2013 Udostępnij Opublikowano 10 Stycznia 2013 lol Odpowiednikiem hspeed na osi Y jest vspeed. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Moho Opublikowano 10 Stycznia 2013 Autor Udostępnij Opublikowano 10 Stycznia 2013 lol Odpowiednikiem hspeed na osi Y jest vspeed. Człowieku, NIE CHCĘ UŻYWAĆ HSPEED I VSPEED TYLKO X I Y. oki? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 10 Stycznia 2013 Udostępnij Opublikowano 10 Stycznia 2013 To może dodaj pomocniczą zmienną? Nic sobie nie wyczarujesz z patrzenia na skrypt, trzeba pomyśleć. GML tmp_ys = 1 //create</span> GML tmp_ys *= -1 //kolizja</span> GML y += 2*tmp_ys //poruszanie się</span> 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ę