Pato220 Opublikowano 31 Lipca 2014 Udostępnij Opublikowano 31 Lipca 2014 Jak zrobić przełączanie między 2 postaciami np:po naciśnięciu (spacji) przełączy mi na drugą postać w roomie :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 31 Lipca 2014 Administratorzy Udostępnij Opublikowano 31 Lipca 2014 view_object[0] = nazwaObiektu; A jak chcesz wiedzieć z której na którą to: if (view_object[0] == nazwaObiektu) { ... } else { ... } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Madness Opublikowano 31 Lipca 2014 Udostępnij Opublikowano 31 Lipca 2014 Co znaczy "przełączyć między postaciami"? Chcesz, żeby po wciśnięciu spacji dało się sterować tą drugą? Jeśli tak, to wystarczy sobie stworzyć obiekt kontrolujący która postać ma być pod naszą kontrolą i np. to dzięki niemu sterować postacią. Np. GML // Zdarzenie Create target = standardowy_obiekt; //Zdarzenie Step /* Poruszanie się postaci przy pomocy target np.: if( keyboard_check(...) ) target.x += predkosc; ... */ Ten sposób może Ci nie wystarczać. Drugim sposobem (prostszym) jest stworzenie zmiennej globalnej, na podstawie której sprawdzamy który z obiektów ma się teraz poruszać. GML /* 1.W jakims obiekcie tworzymy zmienna global.character_index ktora bedzie miala wartosc np. 0 2.Następnie w każdym obiekcie ktorym bedzie mozna sterowac tworzymy zmienna myIndex = jakiejs tam liczbie 3.W zdarzeniu step na samym poczatku sprawdzasz czy global.character_index != myIndex, jesli tak to exit; jesli nie to ten instrukcja tego if'a zostanie pominieta i kod ponizej sie wykona. 4.Ostatnim krokiem bedzie to, zeby w jakims obiekcie, kiedy wcisniesz spacje zmieniala sie wartosc global.character_index na ustalona rzecz jasna. Przykladowo, jesli masz dwie postacie o myIndex = 0 i myIndex = 1, to przy wcisnieciu spacji z 0 zmieniasz na 1 a z 1 na 0 itp. */ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 31 Lipca 2014 Udostępnij Opublikowano 31 Lipca 2014 Nie jestem zbyt dobry w pisaniu gier, ale ja bym to zrobił tak. Zrobił dwie postacie. W create tej pierwszej dał global.postac = 1. W stepie pierwszej postaci sprawdzałbym, czy global.postac = 1, jeśli tak to możemy nią kierować, chociaż wtedy chyba wszystkie kody pierwsze sprawdzały czy global.postac = 1. Np. GML if (global.postac == 1) { //chodzenie, strzelanie itd. } A w drugiej postaci polegałoby to na tym samym, tyle, że zamiast global.postac = 1, było by 0. Proszę, nie bić, to tylko moja propozycja ;) EDIT: Czy w Studio, nie ma teraz tak, że jeśli damy exit, to nie wykonuje całego, kodu, a nie danego bloku kodu? Jeśli tak, to mój sposób nie jest taki głupi ;P P.S. Myślę, że wiesz jak zrobić zmianę zmiennych, czy zmianę view. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pato220 Opublikowano 31 Lipca 2014 Autor Udostępnij Opublikowano 31 Lipca 2014 Wiesz co jestem nowicjuszem i niezbyt wiem gdzie jest zmienna globalna może jakaś instrukcja :> Z góry dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 31 Lipca 2014 Udostępnij Opublikowano 31 Lipca 2014 Zmienna lokalna to zmienna, ktora inicjujesz w evencie Create danego obiektu. Bezposredni dostep masz do niej tylko w tym obiekcie, inne obiekty musza korzystac z referencji. Przyklady: GML //Obiekt1, event Create hp = 100 //inicjacja zmiennej //Obiekt1, event Step if(hp < 100) hp += 1 //mozna operowac w dowolny sposob na tej zmiennej //Obiekt2, event Collision with Obiekt1 other.hp -= 50 //other to specjalna referencja dostepna w evencie Collision, oznacza ona Obiekt1, z ktorym zderza sie Obiekt2 //Obiekt2, Keyboard Press: Space Obiekt1.hp -= 50 //Obiekt1 jest tutaj referencja, jednakze tylko jednemu Obiekt1 na mapie zmieni sie hp* with(Obiekt1) hp -= 20 //w tym przypadku hp zmieni sie w kazdym Obiekt1 //*Obiekt1 z najnizszym ID (stworzony najwczesniej)</span> Zmienna globalna to zmienna, ktora inicjujesz w evencie Create dowolnego obiektu (a takze w Creation Code rooma). Nie ma do niegj bezposredniego dostepu, mozna to zrobic tylko korzystajac z referencji global. Przyklady: GML //Obiekt1, event Create global.hp = 100 //inicjacja zmiennej //Obiekt1, event Step if(global.hp < 100) global.hp += 1 //mozna operowac w dowolny sposob na tej zmiennej //Obiekt2, event Collision with Obiekt1 global.hp -= 50 //teraz nie ma referencji other, gdyz zmienna jest globalna i nie nalezy do zadnego obiektu //Obiekt2, Keyboard Press: Space global.hp -= 50 //podobnie jak wyzej with(Obiekt1) global.hp -= 20 //ten kod sprawi, ze kazdy Obiekt1 na mapie osobno odejmie wartosc zmiennej globalnej (np. 3 obiekty odejma 3*20 = 60)</span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pato220 Opublikowano 31 Lipca 2014 Autor Udostępnij Opublikowano 31 Lipca 2014 Ps; macie jakiś tutorial bo dalej nic nie ogarniam xd Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 31 Lipca 2014 Udostępnij Opublikowano 31 Lipca 2014 Już tłumaczę łopatologicznie. (do osób bardziej zaawansowanych niż ja - przepraszam za błędy) Tworzysz obiekt i nazywasz go np. o_player_1. Ustawiasz jego sprite. W evencie create, dodajesz klocek, w którym następnie wpisujesz kod. A wygląda on tak: GML global.postac = 0. Nie wiem czy twoja gra jest top-down, czy 2D z grawitacją. Najlepiej żebyś grę robił w kodzie, nie na klockach (moim zdaniem to trochę bez sensu i tylko utrudnianie sobie, a nie ułatwianie). Przyjmijmy, że w evencie step, masz kod na chodzenie (jeśli chcesz, jest parę przykładów, w FAQ). GML if (global.postac == 0) { //kod na chodzenie if (keyboard_check_pressed(vk_space)) // jeśli naciśniesz spacje, zmienia Ci zmienną, która następnie zmieni postać global.postac = 1 } Następnie robisz postać 2, która np. nazywasz o_player_2 (myślę, że takie robienie sobie nawyków, jest dobre). I tam w evencie step, czyli tam gdzie powinieneś mieć dużą ilość kodów (przynajmniej tak myślę), postępujesz tak jak w postaci 1 czyli: GML if (global.postac == 1) { //chodzenie if (keyboard_check_pressed(vk_space)) // jeśli naciśniesz spacje, zmienia Ci zmienną, która następnie zmieni postać global.postac = 0 } Wziąłem pod uwagę, że masz np. dwóch bohaterów w roomie i kiedy ruszasz jednym, to drugi stoi w miejscu. Przynajmniej tak to zrozumiałem Edit: Robię Ci już przykład. Link! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pato220 Opublikowano 31 Lipca 2014 Autor Udostępnij Opublikowano 31 Lipca 2014 A masz moze do platfowmówki :D próbuje wpisać kod na chodzenie ;/ GML if (global.postac == 0) { //przyklad z GMCLAN FAQ if place_free(x,y+1) {gravity = 0.5;} else {gravity = 0;} //zmiana if (keyboard_check_pressed(vk_shift)) // jeśli naciśniesz shift, zmienia Ci zmienną, która następnie zmieni postać global.postac = 1 view_object[0] = o_player_1 } mam jeszcze (left) if(place_free(x-4,y)) { x -= 4; } (right) if(place_free(x+4,y)) { x += 4; } (up) if (!place_free(x,y+1)) { vspeed -= 8; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 1 Sierpnia 2014 Udostępnij Opublikowano 1 Sierpnia 2014 Proszę bardzo, już zrobiłem. Tylko jeśli chodzi o zmienianie sprite, zrobiłem to źle. Ale nie chciałem Ci więcej rzeczy do ogarnięcia dawać. Oto Nowy Link!. Jak coś to pisz, jeśli będę potrafił to pomogę. Zamiast right, up itd, pisze się GML if keyboard_check(vk_right) { //kod } Zobacz w tym co wysłałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pato220 Opublikowano 1 Sierpnia 2014 Autor Udostępnij Opublikowano 1 Sierpnia 2014 Dzieki (y) 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ę