Skocz do zawartości

Jestem nowy i mam pare problemów...


Rekomendowane odpowiedzi

Hej,

Jestem nowy i robie swoją pierwszą grę... Nie będzie to Supreme Commander :P ale chwilowo zamierzam napisać prosty Total Annihilation TD. Same budynki, wieże itp, nie ma problemów za bardzo (z wyjątkiem oprawy graficznej...) ale nie moge wpaść na to co zrobić by budować tzn. mam ikonkę która będzie odpowiedzialna za to aby w miejscu gdzie wyznacze stworzyć budynek, ale nie wiem jak wyznaczyc miejsce gdzie ma być zbudowany, chwilowo buduje mi je obok ikony...

Odnośnik do komentarza
Udostępnij na innych stronach

Po prostu użyj mouse_x i mouse_y, które odpowiadają za pozycję x i y myszy. Tak więc kod
instance_create(mouse_x,mouse_y,obiekt);

stworzy dany obiekt w miejscu, gdzie akurat znajduje się wskaźnik myszy.

 

 

Właśnie to zrobiłem... wskaźnik myszy znajduje się w tej chwili w pozycji obiektu który inicjuje tą czynność, więc jest tam gdzie ten obiekt...

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm wpadłem na pomysł aby ten przycisk odpowiedzialny za budowanie wierzyczki tworzył obj_buduj który ma w step:

GML
x = mouse_x;

y = mouse_y;

view_object[0] = id;

i gdy sie nacisnie lpm wtedy dopiero buduje ten budynek/wierzyczkę na pozycji myszki. Ale są dwa problemy: 1szy to taki że nie stwarza tego przy lpm a drugi jak nie musieć tworzyć następne obiekty dla karzdego budynku/wierzyczki tylko żeby tworzył ten sam obiekt w zależności co się nacisneło.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
//przy kliknięciu na ikonkę dajesz ze np:

buduj=1

//(globalnie lub lokalnie)

// i tworzysz obiekt budynek

instance_create(mouse_x,mouse_y,domek)

 

// w stepie budynku dajesz

if buduj=1

{

x=mouse_x

y=mouse_y

}

// w obiekcie budynek w evencie global mouse left released (lub dowolny przycisk ale globalny)

// globalny ażeby móc wybrać miejsc gdziekolwiek

buduj=0

 

// dzięki temu budynek stanie w miejscu

// musisz dopasować to do swojej gry, i pamiętać o kolizjach tzn. żeby nie budować budynku na budynek itd.

//może ten system nie jest najlepszy;) ale na pewno naprowadzi cię na dobry tok myślenia.

 

 

A co do napisu na wierzchu to tak jak Yoda napisał. Jeśli coś jest rysowane na końcu(jako ostatnie w drawie) to jest na wierzchu. Także jest tak że jeśli obiekt ma depth(głębokość) mniejszą to jest wyżej więc i jego draw jest wyżej ;)

Odnośnik do komentarza
Udostępnij na innych stronach

W sumie to sobie już poradziłem... Zrobilem jednego buga i tyle. Ale nadal pozostaje mi pytanie czy moim sposobem potrzebuje tworzyc następny obiekt dla każdego budynku?? Nie da sie zrobić jakiegoś skryptu który bedzie reagował na nacisnięty ostatni guzik/ikonkę? i tworzył odpowiedni budynek?

Odnośnik do komentarza
Udostępnij na innych stronach

mozesz dac w create tego obiektu ktory buduje zmienna

GML
budynek = 0;

i np. iknonkom budynkow w menu czy jak ty to masz dac ze jak na niego klikniesz to to zmienna zmienia sie na inna cyferke np.

wtedy gdy budujesz program powinien sprawdzac ta zmienna i tworzyc odpowiedni budynek

 

GML
if budynek = 1 { instance_create(x,y,baraki)}

if budynek = 2 { instance_create(x,y,zbrojownia)}

if budynek = 3 { instance_create(x,y,wiezyczka)}

 

mozesz tez to zrobic na switch'ach.

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ę...