Skocz do zawartości

Budowanie jednostek


Rekomendowane odpowiedzi

Witam!

Robię grę strategiczną. Ma być to taki najzwyklejszy RTS. Jak dotąd zrobiłem menu gry :D. Chciałbym się dowiedzieć jak zrobić coś takiego, że po naciśnięciu np. zamku, pojawi mi się interfejs(chyba będę go musiał sam narysować), a w tym interfejsie będzie widniała ikonka np. jakiegoś żołnierza. Po jej naciśnięciu tak jak w każdej strategii ma się pojawić druga ikonka w innym miejscu, która będzie pokazywała postęp budowy danej jednostki. W tym właśnie tkwi problem. Nie mam pomysłu jak zrobić tą animację np. napełniającego się paska(chodzi o postęp budowy).

Proszę o pomoc!

Odnośnik do komentarza
Udostępnij na innych stronach

obj_zamek: mouse_left_pressed:

GML
instance_create(x,y,interfejs_zamek)

interfejs_zamek:create:

GML
instance_create(x+10,y+10,zolnierz_zamek)

zolnierz_zamek:mouse_left_pressed:

GML
instance_create(x,y,budowanie_jednostki_zamek)

budowanie_jednostki_zamek:

GML
//create

czas_teraz=0

czas_wymagany=150

alarm[0]=1

//alarm0

czas_teraz+=1

alarm[0]=1*room_speed

//step

if czas_teraz=czas_wymagany

{

instance_create(x,y,zolniez_zrobiony_zamek)

instance_destroy()

}

//draw

draw_healthbar(x,y,x+50,y+5,czas_teraz,c_red,c_black,c_blue,czas_wymagany,true,true)

 

ufff ;D

 

E:poprawiłem step

Odnośnik do komentarza
Udostępnij na innych stronach

Dużo rzeczy działa. Jedna rzecz mi tylko nie wychodzi. Kiedy naciskam zolnierz_zamek to pojawia mi się tylko healthbar bez ikonki żołnierza(jakby co to mam włożonego sprita do obj budowanie_jednostki_zamek). Bawiłem się trochę z depth, ale i tak nie działa, pojawia się tylko healthbar bez ikonki.

Proszę o pomoc raz jeszcze!

Odnośnik do komentarza
Udostępnij na innych stronach

Działa. Ale jeszcze jedna sprawa. Coś chyba nie wyszło z tym healthbarem. Czarny pasek dochodzi jedynie do 1/5 czerwonego paska, a następnie cały healthbar znika. Ustawiłem czas_wymagany na 10, więc po 10 sekundach powinna zrobić się jednostka. I owszem po 10 sekundach robi się jednostka, ale w momencie, gdy czarny pasek jest w 1/5 swojej drogi. Najśmieszniejsze jest to, że obojętnie jak bym ustawił czas_wymagany, to czarny pasek zawsze idzie z tą samą prędkością, tylko, że po prostu healthbar szybciej znika.

Proszę(po raz drugi) o pomoc!!!!

Odnośnik do komentarza
Udostępnij na innych stronach

Pomyślałem, żeby nie robić healtbara tylko liczbę przy ikonce budującego się żołnierza. Ta liczba ma oznaczać postęp procentowy budowy tej jednostki. Udało mi się to zrobić, ale popsuła się inna rzecz. Widoczna jest tylko ta liczba, a ikonka budującego się żołnierza jest niewidoczna...

Odnośnik do komentarza
Udostępnij na innych stronach

Wrzucasz to do draw:

GML
draw_sprite(sprite_ikonki,index_ikonki,x,y)

draw_text(zamek_zolnierz_budowanie.x+15,zamek_zolnierz_budowanie.y+15,czas_teraz)

E: UP

string(czas_teraz) jest zbędne, wystarczy samo czas_teraz. Gdybyś chciał łączyć ze sobą liczby i napisy, to dopiero wtedy.

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra Działa! Wpisałem:

GML
draw_sprite_ext(sprite_index,-1,x,y,image_xscale,image_yscale,direction,image_blend,image_alpha)

do draw i działa.

Dobra jeszcze ostatnie dwa pytania, bo nie chcę zakładać dla nich nowego tematu.

1. Jak zrobić taki typowy sposób przesuwania ekranu w grze RTS? Mam już viewa, ale teraz jeszcze muszę zaprogramować, żeby ten view się przesuwał w momencie kiedy kursor dotknie krawędzi viewa.

2. Kiedy naciskam zamek to pojawia mi się interfejs. Poprzez kliknięcie LPM w obojętnie jakie miejsce rooma(nie w zamek) ma ten interfejs zniknąć. Jeśli podczas włączonego interfejsu włączyłem budowanie danej jednostki, to po zniknięciu interfejsu ma się ona nadal budować. Kiedy tak się stanie(gracz włączy interfejs, zacznie budować jednostkę, a następnie wyłączy interfejs), to po jego ponownym włączeniu ma się pojawić interfejs ze szkoloną jednostką(domyślne ustawienia są takie, że interfejs pojawia się tylko z ikonkami jednostek możliwych do zbudowania, a dopiero po ich naciśnięciu jednostka zaczyna się budować). Chodzi ogólnie o jakby takie zapisywanie stanu interfejsu, jeśli został on wyłączony.

Proszę po raz ostatni w tym temacie o pomoc!!!!

Odnośnik do komentarza
Udostępnij na innych stronach

AD 1:

Link z przykładów (drugi od góry). W Twoim przypadku stwórz obiekt, który śledzi myszkę. Wejdź także w zakładkę view w roomie, zobaczysz co i jak.

AD 2:

Jak chcesz coś takiego zrobić, musisz stworzyć bazę danych. Na przykład za pomocą tablic albo list. Dodajesz kod na odczytanie danych, a nasepnie wyświetlasz co Ci jest potrzebne, dla przykładu:

GML (create)
pot[0]=1;//tablica przechowująca ilość danych potów

pot[1]=1;

pot[2]=1;

GML (jakas tam akcja)
pot[1]-=1;

GML (draw interfejsu)
for(i=0;i<3;i+=1)//lecimy po całej tablicy za pomocą pętli

if(pot)//jeżeli w danym indeksie tablicy jest liczba większa od 0

draw_sprite(s_pot,i,xx,yy+i*20)//wyświetl sprite pota</span>

s_pot to sprite, w którym są umieszczone wszystkie rysunki potów. W drugim argumencie (image_index) masz 'i'. Dzięki temu wyświetla się odpowiedni rysunek. Pot 1 ma index 0, pot 2 ma index 1 itd. i*20, powoduje że kolejne rysunki są wyświetlane o 20 px niżej.

Odnośnik do komentarza
Udostępnij na innych stronach

AD 1:

Link z przykładów (drugi od góry). W Twoim przypadku stwórz obiekt, który śledzi myszkę. Wejdź także w zakładkę view w roomie, zobaczysz co i jak.

AD 2:

Jak chcesz coś takiego zrobić, musisz stworzyć bazę danych. Na przykład za pomocą tablic albo list. Dodajesz kod na odczytanie danych, a nasepnie wyświetlasz co Ci jest potrzebne, dla przykładu:

GML (create)
pot[0]=1;//tablica przechowująca ilość danych potów

pot[1]=1;

pot[2]=1;

GML (jakas tam akcja)
pot[1]-=1;

GML (draw interfejsu)
for(i=0;i<3;i+=1)//lecimy po całej tablicy za pomocą pętli

if(pot)//jeżeli w danym indeksie tablicy jest liczba większa od 0

draw_sprite(s_pot,i,xx,yy+i*20)//wyświetl sprite pota</span></span>

s_pot to sprite, w którym są umieszczone wszystkie rysunki potów. W drugim argumencie (image_index) masz 'i'. Dzięki temu wyświetla się odpowiedni rysunek. Pot 1 ma index 0, pot 2 ma index 1 itd. i*20, powoduje że kolejne rysunki są wyświetlane o 20 px niżej.

Co masz na myśli mówiąc jakaś tam akcja? Poza tym nie bardzo jeszcze rozumiem sens tablic w gmlu. Nie powiedziałeś jak zrobić coś takiego, żeby po wciśnięciu LPM na obojętnie jaką część rooma(oprócz zamku) znikał interfejs. A co do tego viewa w RTsie to nadal nie wiem jak zrobić przesuwanie się tego ekranu. Mogę napisac w stepie obj_kursor:

GML
if (x=0 or x=640) then //No i co dalej...</span>

 

Sorry za to, ale dopiero zaczynam przygodę z GM i zadaję bardzo dużo pytań(pewnie głupich).

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