Skocz do zawartości

candy

Użytkownicy
  • Postów

    491
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez candy

  1. To przerób kod, który Ci napisałem. Musisz zamienić ostatni else na dwa inne: GML // dwa pierwsze porównania plus else if(sprite_index==ludzik_right||sprite_index==ludzik_right_jump itd) { //warunek bez zmian na prawo } else { //warunek bez zmian na lewo } Musisz oczywiście zmienić wartości, które Ci podałem w argumentach funkcji. Wszystko zależy gdzie masz ustawiony Origin sprite'a.
  2. To zróbmy to tak: GML //event naciśnięcia klawisza K if(keyboard_check(vk_up))//gdy naciśnięty jest klawisz do góry... { if(collision_point(x,y-30_o,wall_kop,1,0))//... sprawdź czy jest kolizja od góry z wall_kop... { with collision_point(x,y-30,wall_kop,1,0) instance_destroy()//.. jeżeli tak, to usuń ten obiekt } } else if(keyboard_check(vk_down))//jeżeli nie naciśniętego klawisza strzałka góra, to sprawdź czy jest naciśnięty klawisz do dołu... { if(collision_point(x,y+30_o,wall_kop,1,0))//... rób analogicznie jak wyżej { with collision_point(x,y+30,wall_kop,1,0) instance_destroy() } } else//... jeżeli nie naciskamy ani strzałkę do góry ani do dołu, to... { if(collision_point(x+30*image_xscale,y_o,wall_kop,1,0))// to sprawdź czy jest obok bohatera obiekt wall_kop { with collision_point(x+30*image_xscale,y,wall_kop,1,0) instance_destroy() } } Założyłem tutaj, że bohater jest obracany za pomocą funkcji image_xscale. Ja zawsze dodaje sprity tak, aby były odwrócone w prawo. Wtedy mam, że gdy postać stoi odwrócona w prawo to jej image_xscale=1, jak w lewo to -1. Dzięki czemu, skróciliśmy kod (nie musimy rozpatrywać oddzielnie dwóch przypadków).
  3. Trzeba pobrać id odpowiedniego kamienia. Stwórzmy dodatkowo zmienną "strona", która przechowuje informację, w którą stronę jest obrócony bohater. GML //===create strona=1; //1- obrócony w prawo, 2-obrócony w dół, 3- obrócony w lewo, 4-obrócony do góry //===event naciśnięcia K if(strona==1)// jeżeli bohater jest obrócony w prawo... { if(collision_point(x+x_o,y+y_o,wall_kop,1,0))//... sprawdź czy po prawo od niego jest obiekt wall_kop... { with collision_point(x+x_o,y+y_o,wall_kop,1,0) instance_destroy()//... jeżeli tak, to usuń ten obiekt wall_kop } } else if(strona==2) // analogicznie jak wyżej</span> Pod zmienną x_o i y_o podstaw odpowiednie wartości. Nie wiem jakie są wymiary poszczególnych spritów u Ciebie, dlatego tak to zapisałem. Musisz jeszcze dodać przy naciskaniu strzałek linijkę kodu, która będzie zmieniała wartość zmiennej strona.
  4. 1. Tworzysz nowy obiekt (np o_wpis_rekord) 2. Tworzysz zmienną, do której będzie wprowadzany wpis (np wpis="";) 3. Pobierasz znaki z naciskanych klawiszy: GML if(keyboard_key)//jeżeli jakiś klawisz został naciśnięty... { wpis+=keyboard_lastchar;//... wpisz jego znak do stringa wpis... keyboard_key=false;//... wyczyść bufor } Oczywiście już przed samym pobieraniem znaków, musisz wyczyścić bufor. 3. Wyświetlanie zawartości wpis (w DRAW) GML draw_text(x,y,wpis) 5. Potwierdzamy zakończenie wpisywania (np przez enter) i dodajemy do listy highscore gracza 'wpis' GML if(keyboard_check_pressed(vk_enter)) { highscore_add(wpis,zdobyte_punkty) instance_destroy()// usuwamy obiekt o_wpis_rekord } Jest to prosty sposób pobierania znaków z klawiatury. Możesz go rozbudować o możliwość usuwania ostatniego znaku, czy wpisywania do momentu osiągnięcia maksymalnej długości itp. Należy jeszcze dorobić do tego ładne tło.
  5. To daj gdzieś zmienną, która będzie przetrzymywać informację (ewentualnie przechowuj w pliku zewnętrznym), czy łucznik został pokonany. Na przykład za pomocą zmiennej globalnej: GML global.lucznik=false;// false- nie pokonaliśmy łucznika, true- możemy nim grać. //sprawdzamy (na arenie) czy pokonaliśmy łucznika i możemy nim grać if(global.lucznik) { // tworzymy obiekt łucznik i możemy go wybrać, albo coś podobnego }
  6. Użyj instance_number(). E. za wolno
  7. To przerób highscore_value na string, score=string(highscore_value) i masz już string. A co do separacji ostatniej cyfry, musisz skorzystać z funkcji draw_text() oraz draw_set_color() dla ostatniej cyfry.
  8. Skorzystaj z funkcji draw_set_halign(fa_right).
  9. 1. Masz kilka sposobów GML if(walka) visible=true; else visible=false; Albo dajesz w stepie GML visible=walka; 2. Podobnie jak wyżej. Musisz sprawdzić czy położenie myszki (mouse_x i mouse_y) znajdują się na pasku. GML if(mouse_x<prawa krawedz paska && mouse_x>lewa krawedz paska && (analogicznie z y)) { //kod na wyświetlanie stanu życia // funkcja draw_text czy coś innego } 3. Podobnie jakbyś chciał, aby postać chodziła w czterech kierunkach. Poszukaj, jest mnóstwo przykładów z tym. 4. Po prostu zmień położenie postaci (x i y). 5. To już większy problem. Zależy co ma zrobić i kiedy. Nikt raczej nie poda Ci takiego kodu. Dużo z tym roboty. To najtrudniejsza rzecz jaką będziesz musiał zrobić. Wrogowie muszą odpowiednio się zachowywać, muszą być wyświetlane odpowiednie sprity oraz musi być zrobiona jeszcze interakcja z graczem (np gdy przeciwnik go uderzy). Musisz uzbroić się w cierpliwość i pisać linijkę po linijce. 6. Funkcja choose() i if(), który sprawdzi czy atak jest magiczny i odejmie odpowiednią ilość many.
  10. A mógłbyś to "mało" rozwinąć?
  11. Zapomniałem dodać, że tylko trzy ostatnie opcje działają.
  12. Wrzuciłem kolejną wersję (pierwszy post). Mamy tyle samo poziomów co wcześniej, lecz dodane są różne opcje (konfiguracja klawiatury, pada itp). Jak zwykle proszę o sugestie jak i raportowanie błędów. Chcę już mieć tą część zrobioną do końca i już do tego nie wracać. Sterowanie. W grze spotykamy się z takimi określeniami jak: strzałka góra, dół, lewo oraz prawo, klawisz A, B, Start i Select. Domyślnie klawisz A to 'A', B to 'S', Start to 'D', Select 'Q'. Na padzie wygląda to tak: klawisz A to przycisk 1, B to 2, Start to 3 a Select to '4'. Klawiszem Start włączamy pauzę. Klawisz Select służy do wejścia w opcje gry. I dzięki za powyższe uwagi.
  13. Skorzystaj z funkcji place_free(), place_meeting() albo z collision_[coś tam]().
  14. GML (create) moze=true; a=false; GML (step) if(moze) { a+=1; if(!sound_isplaying(sound)) sound_play(sound) if(a==100) moze=false; } Możesz to także zrobić za pomocą alarmów.
  15. W jakimś eventcie: GML if(glosno) glosno-=1; sound_volume(sound0,glosno/100)
  16. candy

    x-Space

    Mógłbyś zrobić coś takiego, aby szybkość kamieni i przeciwnika wzrastała z czasem. Przydałby się jakiś system punktacji, bonusy (szybciej strzela, strzela dwoma rakietami itp.) oraz jakieś sprity, które pokazywałyby ile mamy jeszcze życia. Popraw jeszcze strzelanie (żeby strzelał dokładnie ze środka sprity'a, nie z boku) oraz to, że zatrzymuje się bliżej prawej niż lewej krawędzi ekranu.
  17. Tytuł: Nana Puzzle 2 Gatunek: logiczna Opis: Znowu sterujemy dzielną Naną, aby uratować Cukierkową Krainę. Walczymy z Hizumi oraz z innymi ciemnymi typami. Największą zmianą w grze jest system bloczków. W poprzedniej części był nie zbyt dopracowany. Teraz mamy całkowitą swobodę w budowaniu, dzieleniu oraz niszczeniu bloczków. Download: Nowy link Rozmiar pliku: 1,3 MB Autorzy: Ja Programowanie: Ja Fabuła: Ja Grafika: Ja i Paint Muzyka: Net Screeny: Screen 1 Screen 2 Dopisze jeszcze, że spacją dokonujmy resetu poziomu, ESC wychodzimy, a F4 zmieniamy na full/window mode. Cała reszta w tutorialu. Tło jest oczywiście do wymiany, tylko na teraz jest takie. Byłbym wdzięczny za wszelkie uwagi i komentarze oraz za raportowanie błędów. E: Teraz zauważyłem, że nie napisałem, że klawiszem 'A' przechodzimy do kolejnego tekstu.
  18. "Zsumuje" Ci się, ponieważ jest coraz więcej obiektów na sobie. Wyobraź sobie, że nakładasz na siebie torebki foliowe. Gdy jest ich mało, widzisz co jest po drugiej stronie. Gdy jest ich coraz więcej, zaczynasz widzieć coraz mniej i obraz jest bardziej "ciemny". Tutaj masz to samo. Co zrobić aby tak się nie działo? Jedynie co mi przychodzi do głowy, to sprawdzać z iloma obiektami dany obiekt ma kolizję. Gdy jest ich więcej niż, załóżmy 5, to już nie każemy mu rysować sprite'a. Ma to swój minus. Obiekt przestaje być widoczny co sugeruje, że go nie ma, mimo że dalej istnieje.
  19. Funkcję wrzucasz do event DRAW.
  20. Chcesz zrobić aby postać wskakiwała na platformy od dołu, tak? Możesz to napisać tak: GML (step platforma) if(y-o_gracz.y>jakas wartosc)//gracz jest wyzej niz platforma solid=true; else solid=false; Musisz pokombinować z wartością w if. Nie wiem jakie masz wymiary spritów. Oczywiście najlepiej byłoby gdybyś centrował origin. Wtedy możesz if zamienić na uniwersalny i wrzucić do script'a, aby nie powtarzać kodu, który będzie różnił się tylko wartością.
  21. Nie funkcji, a argumentu w background_add(). Funkcja ta ma cztery argumenty, nie trzy.
  22. Przepisałem Twój kod i mi działa. (Brakuje jednego argumentu w pierwszej funkcji, pewnie źle wpisałeś). Może korzystasz z view'a i przesuwasz go zaraz jak odpalasz grę.
  23. Zamiast prosić o przykład, mógłbyś napisać co Ci nie działa. Czy wyskakuje jakiś błąd, czy może w ogóle nie wyświetla backgraund'a. Wrzuć kod jaki masz, może zapomniałeś o czymś.
  24. Zwiększ każdy warunek o 1.
  25. Więc tak. Jak napiszesz: GML if(keyboard_check_pressed('P')) to if jest zawsze prawda. Zamień to na: GML if(keyboard_check_pressed(ord('P'))) W klamrze else dopisz jeszcze zmienna=false, bo nie będziesz mógł wyłączyć pausy.
×
×
  • Dodaj nową pozycję...