Skocz do zawartości

Zaznaczenie obiektu i jego zmiana


Gość

Rekomendowane odpowiedzi

Witam, postanowiłem że spróbuję swoich sił i stworzę jakiegoś najprostszego Tower Defence, ale tradycyjnie nie potrafię ogarnąć GML bo nie znam jego możliwości.. Zacznę może od tego:

Mam 4 obiekty,

1. gm_build - plac budowy, gdy się na niego kliknie powstaje obiekt tower_menu, przy ponownym kliknięciu tower_menu jest usuwane.

Left button pressed

GML
if instance_exists(tower_menu)

{

with(tower_menu)instance_destroy();

}

else

{

global.tx = gm_build.x;

global.ty = gm_build.y;

instance_create(480,256,tower_menu);

}

to kod gm_build.

 

2. tower_menu - tworzy listę dostępnych wież(ale to zrobię dopracuję potem)

Create

GML
instance_create(480,256,menu_twr_blue);

Destroy

GML
with(menu_twr_blue)

instance_destroy();

 

3. twr_blue - to zwykła wieżyczka, która na razie jedyne jakie ma zadanie to zastąpić wybrany wcześniej plac budowy.

Kodu na razie nie ma

 

3. menu_twr_blue - wieżyczka która nie strzela, tylko może zostać wybrana i zastępuje kliknięty wcześniej gm_build

GML
instance_create(global.tx,global.ty,twr_blue);

with(gm_build) instance_destroy();

with(tower_menu) instance_destroy();

 

Teraz pytanie.. Jeśli mam np. 3 obiekty gm_build, to co mogę zrobić żeby zmienił się tylko ten wcześniej kliknięty? Próbuję to zrobić przy użyciu zmiennych, ale nie wiem co zrobić dalej.. Czy jest jakaś komenda jak nie wiem.. "last_clicked" czy coś takiego?

Odnośnik do komentarza
Udostępnij na innych stronach

Powinieneś mieć zmienną globalną, nazwij ją jak chcesz (u mnie w kodzie: last_clicked).

W obiekcie gm_bulid, w evencie Left Button Pressed po linijce:

GML
instance_create(480,256,tower_menu);

dodaj:

GML
last_clicked = id

Następnie zamień drugą linijkę w kodzie menu_twr_blue na:

GML
with(last_clicked) instance_destroy()

Nie gwarantuję, że będzie działać, więc na wszelki wypadek stwórz kopię zapasową.

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra, działa.. Dziękuję Ci bardzo :P

GML
if instance_exists(tower_menu)

{

with(tower_menu)instance_destroy();

}

else

{

instance_create(480,256,tower_menu);

global.last_clicked = id;

global.tx = id.x;

global.ty = id.y;

}

Tak to musiałem zrobić :) Jeszcze raz dzięki!
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ę...