Skocz do zawartości

Strzelanie i zycie


OnlyP

Rekomendowane odpowiedzi

Witam, Jako że Game makerem zajmuje się od nie dawna, mam dwa problemy:

1. Mam problem ze strzelaniem, a konkretnie o to jak zrobić odstępy miedzy strzałami. Przykładowo chciałbym: Jak przytrzymam spacje to co 3 sekundy żeby wychodził strzał.

2. Kolejnym problem jest to, że nie ogarniam tego paska życia. Jeżeli ma ktoś jakiś link do tego ładnie wyjaśnionego to poproszę. Dokładniej mi chodzi o to ze jak np uderzę kogoś to żeby mu np zabrało 1/4 życia. No i uderzenie żeby zabierało ta 1/4.

 

Na razie tyle :P

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

GML (create)
cooldownmax = room_speed * 3;

cooldown = cooldownmax;

 

GML (step)
cooldown -= 1;

if( keyboard_check( vk_space ) and cooldown <= 0 )

{

instance_create( x,y,o_Bullet );

cooldown = cooldownmax;

}

Odnośnik do komentarza
Udostępnij na innych stronach

2. Kolejnym problem jest to, że nie ogarniam tego paska życia. Jeżeli ma ktoś jakiś link do tego ładnie wyjaśnionego to poproszę. Dokładniej mi chodzi o to ze jak np uderzę kogoś to żeby mu np zabrało 1/4 życia. No i uderzenie żeby zabierało ta 1/4.

 

Znaczy ze mamy za ciebie zapisac odejmowanie 1/4 zmiennej? Ulamki chyba umiesz, dodawac/odejmowac/dzielic/mnozyc tez. W czym problem?

Odnośnik do komentarza
Udostępnij na innych stronach

Mam kolejne pytanko:

Staram się zrobić gierkę w stylu bijatyki. Zrobiłem sprity poustawiałem pod różne klawisze je. wWzystko ładnie pięknie tylko że: nacisne przykładowo "z" (jeden z ciosów) to zmieni się sprite i nie wiem jak zrobić zeby ten cios w tym momencie zabierał przeciwnikowi życie jeśli bedzie on w zasięgu. Z góry dziękuje.

Sory za offtop

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

GML
if( sprite_index == hero_kick )

{

if( place_meeting( x,y,o_Enemy )

{

a = instance_nearest( x,y,o_Enemy );

a.HP -= 10;

}

}

 

do tego przydałoby się jakieś zabezpieczenie za pomocą zmiennej typu bool na to, żeby tylko raz podczas jednego kopu przeciwnik obrażenia otrzymywał.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

GML (create)
AlreadyKicked = false;

 

GML (step)
if( !AlreadyKicked and sprite_index == hero_kick )

{

if( place_meeting( x,y,o_Enemy ) )

{

a = instance_nearest( x,y,o_Enemy );

a.HP -= 10;

AlreadyKicked = true;

}

}

else if( AlreadyKicked and sprite_index != hero_kick )

AlreadyKicked = false;

na pewno da się to wydajniej / lepiej zrobić ale śpiący jestem i ledwo myślę już

Odnośnik do komentarza
Udostępnij na innych stronach

No to teraz jeszcze mam jeden problem. A konkretnie przeciwnicy. Jak zrobić żeby przeciwnik, który chodzi w kolko gdy zobaczy bohatera porzucił swoje zajęcie ( to chodzenie w lewo i prawo xD) obrócił się do bohatera, podbiegł do niego i zaczął nazwijmy to: podgryzać <xD> np. co 3 sekundy. [nie które czynności dałem rade zrobić, ale myślę, że jak to będzie w całości będzie mniejszy kłopot. :) ]

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

GML (create)
HeroInRange = false;

Range = 300;

 

pozniej w stepie sprawdzasz czy hero jest w zasiegu ( funkcja point_distance ), zmieniasz HeroInRange na true w razie potrzeby. No i jesli jest to niech podbiega jesli nie stoi przy hero i go atakuje z cooldownem na 3 sek ustawionym.

 

Nie będę ci całego kodu wklejał, bo nie o to chodzi, żebym grę za ciebie pisał, a żebyś zaczął myśleć samodzielnie ;)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
Do tej pory praktycznie tylko na kostkach robiłem więc GML prawie nie ogarniam ale popróbuje. Którą komenda może podbiegać bo nie wiem ?<glupie pyt troche xD>

Myślę, że najlepiej będzie tu się posłużyć animacjami oraz zmienianiem wartości zmiennej x danego obiektu.

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuje bardzo za pomoc poradziłem sobie jakoś. :) Teraz mam pytanie jak zrobić, żeby cyfry od 1-100 pojawiały się powoli. eh nie wiem jak to wytłumaczyć. Coś w stylu odliczania tylko że do góry. Jak to zrobić? I jeszcze do tego taki prostokąt, coś w stylu życia tylko że to nie życie xD chodzi mi o to żeby się powiększał i pomniejszał.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

no to w create deklarujesz sobie zmienną np Time = 0;

i w stepie dodajesz sobie, np. Time += 1; 1/room_speed jak chcesz, żeby odejmowało faktyczny upływ czasu (czyli normalne sekundy)

No i ją wyświetlasz.

 

Co do prostokąta to

GML (draw)
draw_rectangle( 100, 100, 100+ zmienna, 100 + zmienna, false );

a zmienną sobie zmniejszasz i zwiększasz.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
GML
if czas>=100 { czas=100 }

 

if czas<=99 { czas+=1 }

Już chyba gorzej się tego rozwiązać nie dało. Gratuluję za takie odkrycie.

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