karolo320 Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 Siema. Jak zrobic, zeby zniszczony zostal obiekt1 i obszar położony od niego no. o 50 pixeli (tak jak dynamit, niszczy wszystko wokół siebie xd) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 GML //kod podczas wysadzania global.xx=x;//przypisz x dynamitu do globalnej global.yy=y; with all if(sqrt(pow((x-global.x),2)+pow((y-global.y),2)))<=50)//sprawdź odległość instance_destroy() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Elevator Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 GML//kod podczas wysadzania global.xx=x;//przypisz x dynamitu do globalnej global.yy=y; with all if(sqrt(pow((x-global.x),2)+pow((y-global.y),2)))<=50)//sprawdź odległość instance_destroy() ... :blink: albo prosciej, mozesz zrobic sprita o wymiarach 100x100 (dynamit, czy jaki tam masz obrazek z lekko zacieniowana reszta pola), wycentrowac go, w create obiektu dac dynamit=0. A wtedy gdy powiedzmy klikniesz go czy co tam chcesz, zmieniasz sprite (mozesz bloczkiem) tego dynamitu, na dynamit z zacieniowanym tlem 100x100, ustawiasz zmienna na dynamit=1. wtedy przy kolizji z iloma obj chcesz, ustawiasz if dynamit=1 then instance_destroy() oczywiscie zaznaczasz applies to object jaki tam chcesz :rolleyes: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 Czyli , ustawiasz w create dynamitu dynamit=false, gdy się wysadza ma dynamit=1. Potem sprawdzasz jakieś tam inne obiekty czy mają kolizję z dynamitem gdy ten jest wysadzany. Załóżmy, że w grze jest 200 obiektów, jakie możemy wysadzić. Wyobraź sobie ile to linijek kodu jeżeli mamy sprawdzać każdy obiekt z osobna. Po za tym sprawdzanie kolizji jest wykonywane co krok (jeżeli używasz eventu collision). Po co dodatkowo sprawdzać taką ilość kodu co krok. Ja tam myślę, że lepiej wykonać kod tylko raz, podczas wysadzania dynamitu. To tylko 4 linijki kodu. I jeszcze jedno, co jest niezrozumiałego w kodzie, którym podałem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 Czyli , ustawiasz w create dynamitu dynamit=false, gdy się wysadza ma dynamit=1. Potem sprawdzasz jakieś tam inne obiekty czy mają kolizję z dynamitem gdy ten jest wysadzany. Załóżmy, że w grze jest 200 obiektów, jakie możemy wysadzić. Wyobraź sobie ile to linijek kodu jeżeli mamy sprawdzać każdy obiekt z osobna. Po za tym sprawdzanie kolizji jest wykonywane co krok (jeżeli używasz eventu collision). Po co dodatkowo sprawdzać taką ilość kodu co krok. Ja tam myślę, że lepiej wykonać kod tylko raz, podczas wysadzania dynamitu. To tylko 4 linijki kodu. I jeszcze jedno, co jest niezrozumiałego w kodzie, którym podałem? Tylko że with all zniszczy dosłownie wszystko nawet to czego twórca mógłby nie chcieć jak już to with obj_destroy i dać parent dla wszystkich obiektów które maja się niszczyć z ów obiektem obj_destroy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Elevator Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 with all if(sqrt(pow((x-global.x),2)+pow((y-global.y),2)))<=50)//sprawdź odległość IMO, to jest really niezrozumiale :rolleyes: dla mnie. Sposobem, ktory podalem, pewnie by sie napracowal wiecej, ale przynajmniej by wszystko rozumial. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 10 Lutego 2011 Autor Udostępnij Opublikowano 10 Lutego 2011 Candy: Unknown function or script: pow Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 10 Lutego 2011 Udostępnij Opublikowano 10 Lutego 2011 LionX Dagger, masz rajcę, rozwali wszystko. Ale zawsze można dodać if, w którym sprawdzi się jaki jest object_index obiektu: GML with all if(object_index!=object_nieniszcz1&&object_index!=object_nieniszcz2 idt) //cała reszta kodu</span> Przy większej ilości obiektów, których nie da się rozwalić, if będzie stosunkowo długi, ale jeżeli jest ich kilka to nie ma problemu. Elevator Równanie okręgu: x^2+y^2=r^2. Z tego wynika, że odległość r wynosi: r=PIERWIASTEK(x^2+y^2). Interesuje nas całe pole (wraz z obwodem) zakreślone przez tą krzywą, dlatego PIERWIASTEK(x^2+y^2)<=r. Po prostu czysta matematyka. karolo320 Powinno być power(), sry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 10 Lutego 2011 Autor Udostępnij Opublikowano 10 Lutego 2011 Dzięki wszytkim, a w szczogólności Candemu (nie wiem jak poprawnie ;d) Wszystko działa, dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 Candy, a jak chciałbym, żeby wszystkim objectom w okregu tych 50 pixeli odjela się zmienna? (kazdy obiekt ma zdefiniowana zmienna o tej samej nazwie) I teraz next pytanie: Chciałbym zrobić tak, że jeżeli istnieje obiekt drzwi1 to obszar np od 100,100 do 200,200 jest całkowicie czorny. Zrobiłem to tak, że w create dałem utworz obiekt (ktory ma czarny sprite wielkosci pola ktore chce miec czarne) i ustawilem x,y. Ale to rozwiazanie zajmowalo za duzo procesora (bo chce miec duzy obszar czarny) i gra "siadała" przy starcie ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 I teraz next pytanie: Chciałbym zrobić tak, że jeżeli istnieje obiekt drzwi1 to obszar np od 100,100 do 200,200 jest całkowicie czorny. Zrobiłem to tak, że w create dałem utworz obiekt (ktory ma czarny sprite wielkosci pola ktore chce miec czarne) i ustawilem x,y. Ale to rozwiazanie zajmowalo za duzo procesora (bo chce miec duzy obszar czarny) i gra "siadała" przy starcie ;p Zamiast tworzyć obiekt, rysuj samego sprajta na ekranie przez draw_sprite z jakiegoś obiektu odpowiedzialnego tylko za rysowanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 Próbowałem, też się zacina. I to nie wina kompa bo sprawdzałem na trzech ;d Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 karolo320 Pytanie pierwsze: GML with all if(sqrt(pow((x-global.x),2)+pow((y-global.y),2)))<=50) { if(object_index!=nazwy obiektów których nie da się rozwalić) zmienna-=xxx; else instance_destroy() } Co do drugiego. Może spróbuj rysować kwadrat za pomocą DRAW, nie będzie potrzeby tworzenia nowego sprite'a. GML draw_rectangle(x,y,x+200,y+200,0) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 Próbowałem, też się zacina. I to nie wina kompa bo sprawdzałem na trzech ;d To jeszcze tak jak candy pisze spróbuj. Albo o surface poczytaj. Albo jeśli to stałe miejsce to przygotuj odpowiednio spreparowane tło i podmieniaj "w locie". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 Ok, dzięki. Rysowanie kwadratu pomogło :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 Takie głupie pytanie: jak w kodzie wyświetlić dowolny tekst? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cordoba Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 GML (Draw) draw_text(x,y,'tekst') O to Ci chodzi? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 Tak, dzięki xD A jeszcze co w tym kodzie jest źle? Bo mi się tekst nie wyświetla.. GML if distance_to_object(bohater1) <40 { draw_set_font(font0) draw_text(bohater1.x,bohater1.y-100,'Zeby odblokowac kliknij F') } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 Masz to w Draw czy w Step ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 11 Lutego 2011 Udostępnij Opublikowano 11 Lutego 2011 Możesz jeszcze przerzucić draw_set_font() do create. Po co ma w kółko powtarzać tę linijkę, jeżeli i tak nic nowego to nie wnosi. Wystarczy, że raz wywołasz tę funkcję. Font się nie zmieni, jeżeli nie wywołasz znowu taj funkcji z innym argumentem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 11 Lutego 2011 Autor Udostępnij Opublikowano 11 Lutego 2011 Mam to w step :) Dałem w Draw i dziłą, dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 12 Lutego 2011 Autor Udostępnij Opublikowano 12 Lutego 2011 A i jeszcze jedni: w jakiej zmiennej sa umieszczone zycia (lives) ? Bo chce wyświetlić a nie znam nazwy ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 12 Lutego 2011 Udostępnij Opublikowano 12 Lutego 2011 A i jeszcze jedni: w jakiej zmiennej sa umieszczone zycia (lives) ? Bo chce wyświetlić a nie znam nazwy ;p hehe. Sam sobie odpowiedziałeś. w zmiennej: "lives" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 12 Lutego 2011 Autor Udostępnij Opublikowano 12 Lutego 2011 Ok, ale i tak nie umiem wyświetlić. Dałbyś kod? I next: Jak zrobić, żeby po wykonaniu eventu wybranym obiektom odjęła się zmienna. Każdy ma zefiniowaną taką samą dla siebie (normalną) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Elevator Opublikowano 12 Lutego 2011 Udostępnij Opublikowano 12 Lutego 2011 lives=10 draw_text(x,y,lives) ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 12 Lutego 2011 Udostępnij Opublikowano 12 Lutego 2011 lives=10 draw_text(x,y,lives) ? GML lives = 10 draw_text(x,y,"Życia: " + string(lives)) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 12 Lutego 2011 Udostępnij Opublikowano 12 Lutego 2011 Co do kolejnego pytania. Możesz zrobić to podobnie jak napisałem kilka postów wyżej albo tak: GML with all if(variable_local_exists("nazwa zmiennej")) nazwa_zmiennej= coś; Ważne, aby argument funkcji variable_local_exists() był stringiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Elevator Opublikowano 12 Lutego 2011 Udostępnij Opublikowano 12 Lutego 2011 GMLlives = 10 draw_text(x,y,"Życia: " + string(lives)) to prawie jednoznaczne :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 12 Lutego 2011 Autor Udostępnij Opublikowano 12 Lutego 2011 Witam. Tym razem proszę o coś bardziej złożonego (chyba). Chcę, że kiedy na mapie jest 1 spawn (obiekt) to wszytkie mobki wychodzą z niego (albo z okreslonej pozycji, ja se dopisze ;d) A jeżeli jest ich więcej to mobki "dzielą" się, czyli wychodzą jeden z jednego, drugi z drugiego. I chciałbym, żeby ten skrytp czy co to będzie mógł obsługiwać do 10 spawnów :) Z góry dzięki! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 12 Lutego 2011 Udostępnij Opublikowano 12 Lutego 2011 Tworzymy obiekt odpowiedzialny za spawn mobków, np o_spawn. Tworzymy n obiektów o_spawn_2. GML //=== CREATE o_spawn_2=== o_spawn.tab[o_spawn.i]=id; o_spawn.i+=1; Stworzyliśmy tablicę tab w o_spawn, która przechowuje id obiektów o_spawn_2. Oczywiście wcześniej w o_spawn trzeba zadeklarować zmienną i. Teraz idziemy do o_spawn. Załóżmy, że wywołanie alarm[0] powoduje stworzenie mobka. Teraz piszemy w alarmie: GML //=== ALARM o_spawn=== // tworzymy zmienną tymczasową _a var _a; // teraz będziemy losować liczbę całkowitą z przedziału od 0 do i // poczytaj w helpie co te funkcje dokładnie robią // wylosowana liczba będzie odnosić nas do jakiejś komórki tablicy tab _a=floor(random(i)); // tworzymy mobka o współrzędnych takich samych jakie ma o_spawn_2, którego id znajduje się w komórce o indeksie _a (tablicy tab) instance_create(tab[_a].x,tab[_a].y,o_mob) Zakładam, że na mapie będzie co najmniej jeden obiekt o_spawn_2. Kod ten pozwoli Ci obsłużyć dowolną ilość spawnów. 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ę