Arathar Opublikowano 25 Listopada 2014 Udostępnij Opublikowano 25 Listopada 2014 Cześć, w game makerze programuję od tygodnia i zacząłem robić grę o drwalu. Mój problem polega na tym, że jak ścinam drzewo, to znikają wszystkie na mapie, zamiast jednego. Pomożecie mi się uporać z tym problemem? Mój kod na ścinanie: GML hp_drzewa = 5; if (distance_to_object(obj_drzewo_lisciaste_1) <6) { if use { global.drewno +=1; hp_drzewa -= 1; } } if hp_drzewa == 0 { instance_deactivate_object(obj_drzewo_lisciaste_1); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pop44 Opublikowano 25 Listopada 2014 Udostępnij Opublikowano 25 Listopada 2014 Może zamiast GML instance_deactivate_object(obj_drzewo_lisciaste_1); daj GML instance_destroy(obj_drzewo_lisciaste_1), a tak btw to chyba nie robisz każdego nawet takiego samego drzewa osobno? Bo widze że masz ponumerowany te objecty. EDIT: Pobaw się może w transform sprite i zrób pień jak coś :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DangBean Opublikowano 25 Listopada 2014 Udostępnij Opublikowano 25 Listopada 2014 Jak odwołujesz sie do ob_drzewo_lisciaste to jest to odwołanie do wszystkich instancji. Albo trzeba znaleźc najbliższe drzewo i zapamietać jego id w zmiennej, miej wiecej tak (nie sprawdziłem): GML var id_drz; id_drz = instance_nearest(x,y,ob_drzewo_lisciaste); if(distance_to_object(id_drz)<6) instance_deactivate_object(id_drz); albo w pętli with zbadać odległość do każdego drzewa (też nie sprawdziłem): GML with(ob_drzewo_lisciaste){ if(distance_to_object(other)<6) instance_deactivate_object(self); } Wewnątrz pętli with self-ami są kolejne instancje ob_drzewo_lisciaste, a other to ten obiekt w którym jest pętla with (nasz bohater?). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DangBean Opublikowano 25 Listopada 2014 Udostępnij Opublikowano 25 Listopada 2014 GML instance_destroy(obj_drzewo_lisciaste_1) instance_destroy() nie ma argumentów :rolleyes: . Działa na self. Ale najprawdopodobniej lepiej użyć tej funkcji, jeśli to ścięte drzewo nie jest już nam dalej potrzebne. Np.: GML var id_drz; id_drz = instance_nearest(x,y,ob_drzewo_lisciaste_1); if(distance_to_object(id_drz)<6) with(id_drz){ instance_destroy(); } albo: GML with(ob_drzewo_lisciaste_1){ if(distance_to_object(other)<6) instance_destroy(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Arathar Opublikowano 25 Listopada 2014 Autor Udostępnij Opublikowano 25 Listopada 2014 Jak użyłem opcji "var" to znikały mi wszystkie drzewa w kolejności od najbliższego do najdalszego, a gdy opcji z pętlą with zadziałało częściowo, ponieważ oprócz głównego drzewa, znika jeszcze kilka randomowych drzew. PS. Numeruję drzewa, ponieważ będzie kilka rodzajów drzew liściastych,iglastych... EDIT. Działa, ale tylko gdy hp_drzewa jest z góry ustawione na jeden, gdy jest np. na 2 global.drewno wciąż się dodaje, lecz drzewo nie znika. Aktualny kod : GML var hp_drzewa; hp_drzewa = 5; var use; use = keyboard_check_pressed(ord("E")); var id_drz; id_drz = instance_nearest(x,y,obj_drzewo_lisciaste_1); if (distance_to_object(id_drz) <4) { if use { global.drewno +=1; hp_drzewa -= 1; } } if hp_drzewa = 0 { instance_deactivate_object(id_drz); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DangBean Opublikowano 25 Listopada 2014 Udostępnij Opublikowano 25 Listopada 2014 Działa, ale tylko gdy hp_drzewa jest z góry ustawione na jeden, gdy jest np. na 2 global.drewno wciąż się dodaje, lecz drzewo nie znika. Aktualny kod : GML var hp_drzewa; hp_drzewa = 5; Jeśli ten kod jest wywoływany w step event, albo w alarmie, to za każdym razem, gdy jest wywyływany ustawiasz hp_drzewa na początkowe 5. To nigdy nie da zera. Dlatego nie powinno być var przed hp_drzewa oraz hp_drzewa powinno być ustwiane na początkowe 5 w create event. var oznacza, że zmienna ma zakres tylko w tym skrypcie nie poza nim. Bez var zmienna ma zakres w całej instancji obiektu - we wszystkich eventach. powodzenia :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Arathar Opublikowano 25 Listopada 2014 Autor Udostępnij Opublikowano 25 Listopada 2014 Jeśli ten kod jest wywoływany w step event, albo w alarmie, to za każdym razem, gdy jest wywyływany ustawiasz hp_drzewa na początkowe 5. To nigdy nie da zera. Dlatego nie powinno być var przed hp_drzewa oraz hp_drzewa powinno być ustwiane na początkowe 5 w create event. var oznacza, że zmienna ma zakres tylko w tym skrypcie nie poza nim. Bez var zmienna ma zakres w całej instancji obiektu - we wszystkich eventach. Właśnie, gdy ustawiłem w evenie create drzewo znika po pięciu 'cięciach", ale znika nie jedno drzewo, lecz wszystkie, i niewiem co jest źle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Arathar Opublikowano 25 Listopada 2014 Autor Udostępnij Opublikowano 25 Listopada 2014 Trochę się nagłowiłem i działa :D Create: GML global.hp_drzewa = 3; hpp_drzewa = global.hp_drzewa; hp3= 3; hp2=2; hp1=1; hp0=0; Step: GML var use; var hp_drzewa; global.hp_drzewa = 3; use = keyboard_check_pressed(ord("E")); var id_drz; id_drz = instance_nearest(x,y,obj_drzewo_lisciaste_1); if (distance_to_object(id_drz) <4) { if use and global.siekiera = 1 { if hpp_drzewa=global.hp_drzewa and hpp_drzewa = hp3 { { global.drewno +=1; hpp_drzewa = hp2; } if hpp_drzewa = hp2 { global.drewno +=1; hp2 = hp1; } if hp2 = hp1 { global.drewno+=1; hp1 = hp0; } if hp1 = hp0 { instance_create(x,y,obj_pien); instance_deactivate_object(id_drz); hpp_drzewa = hp3; } } } } hp0=hp0; hp1=hp1; hp2=hp2; 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ę