Skocz do zawartości

Znikanie objektów


Arathar

Rekomendowane odpowiedzi

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

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

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

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

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

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...