Skocz do zawartości

SimianVirus7

Użytkownicy
  • Postów

    264
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    31

Treść opublikowana przez SimianVirus7

  1. Cóż, mam nadzieje, że kiedyś uda mi się stworzyć grę 2D która wywoła jakiekolwiek uczucia oprócz odruchów wymiotnych. Na razie chciałbym stworzyć jakąkolwiek grę, ale te opinie są mi bardzo przydatne Przytoczę tu tylko taki przykład z mojego życia, kiedy powoli wypalało się we mnie zamiłowanie do grania w komputer ale nagle do rąk trafił mi Far Cry 3. Bardzo dobrze wspominam ten tytuł, łyknąłem go od razu, a na zakończeniu czułem niesamowitą pustkę i dumę z przeżycia świetnej przygody. Mieszanka uczuć kiedy Jason uświadamia sobie, że stał się potworem i muzyka temu towarzysząca. Klimat w takich scenach to coś czego oczekuje od gier.
  2. o proszę, czyli jednak gra 2D może złapać za uczucia i to nie jedna czy dwie, podaliście nawet kilka tytułów. Dziękuje za odpowiedzi
  3. Dzień Dobry, Dobry Wieczór, Mam takie pytanko, bo ja jakoś tego nie widzę. Czy poruszyła was kiedyś jakakolwiek scena w grze 2D? Mogę sobie przypomnieć kilka tytułów w 3D przy których roniłem łzy (sztandarowy przykład to The Walking Dead i końcówka gry). W tych drugich da się odczuć lepszą immersję, nawet jeśli widok jest z 3. osoby. Jak to wygląda z grami 2D? Nie chodzi mi tylko o smutne momenty, ale też o takie kiedy czujesz... moc? Uczucie podobne kiedy dostajesz w ręce błyszczącego shotguna, a w tle zaczyna przygrywać muzyka heavy metalowa.
  4. Cóż, jeśli chodzi Ci mniej więcej o taki efekt: To ja osiągnąłem to następującym sposobem. Stworzyłem nowy obiekt, który nie ma sprite. W nim mam zmienną text która przechowuje jakiś string. Gdy potrzebuje wyświetlić jakikolwiek, gdziekolwiek tekst, tworzę tą instancje (nazwałem ją obj_Text), w tym miejscu gdzie chcę. Przy tworzeniu, dopisuje tekst, jaki ma wyświetlić. Podstawa kodu jest taka: var show_text = instance_create(x, y, obj_text); //przypisanie instancji do zmiennej pozwala go konfigurować podczas tworzenia show_text.text = "Zyskujesz 50 punktów"; W obj_Text mam też zdefiniowaną czcionke, kolor, czas wyświetlanego tekstu itp. oraz vspeed = -1; żeby napis leciał w górę
  5. Cóż twój największy problem rozwiązuje króciutka linijka kodu: STEP ///Miganie obiektu image_alpha = sign(sin(current_time/częstotliwość_migania)); sign - sprawia, że obiekt jest albo widoczny, albo nie. Daje wynik zero-jedynkowy. Możesz go usunąć, wtedy będziesz miał płynne przejścia przy miganiu. częstotliwość_migania - zastąp go jakąś cyfrą. Fajny wynik daje liczba 100 lub 110 Co do innych zapytań: 1) odrzucenie bohatera po kolizji z potworem - wydaje mi się, że nie ma uniwersalnego sposobu, zależy to od twojego kodu. Możesz dać speed = -1 i zobaczyć co się stanie. 2) gracz staję się na chwilę nietykalny - tu także nie będzie uniwersalnego sposobu. Chyba najbardziej banalnym rozwiązaniem będzie stworzenie osobnej zmiennej, która definiuje czy gracz ma być podatny na obrażenia lub nie. Coś w stylu: if(player.can_get_damage == true) { player.hp -= 10; }
  6. tak, tylko instance_create wpisz na koniec całego kodu, za instrukcją until, bo będzie tworzyć tym razem za dużo obj_Budpln z racji tego, że nawet jeśli napotka solid to i tak go tam utworzy Za pomocą instrukcji until masz ustalić miejsce tworzenia przedmiotu, który nie będzie kolidował z solid Musisz jeszcze cały ten kod zrobić w klamrach dla repeat repeat(10) { //cały kod }
  7. Mniej złota tworzy Ci się dlatego, że zastosowałeś if, czyli w skrócie daje wynik jeśli wolne miejsce = twórz, jeśli nie = nie twórz i tak, masz zapytanie raz na jeden repeat. Użyj zamiast if instrukcje do... until do { } until(place_free())
  8. Jak dla mnie estetycznie i techniczne fajna gra. Ciekawy system levelowania(?), czyli jak dolny pasek dojedzie do końca to zmienia nam się broń. Niemniej jednak, gra jest trochę zbyt statyczna. Przydałoby się jej trochę dynamiki.
  9. Pierwsze co przychodzi na myśl, to lengthdir'y. Proste i użyteczne. Do x celownika dopisujesz x gracza + lengthdir_x(odległość, kierunek); Do y celownika dopisujesz y gracza + lengthdir_y(odległość, kierunek); Tu masz przykład jak to zrobić w DRAW w obiekcie gracza, który po prostu rysuje sprite celownika. Tym samym sposobem możesz tworzyć obiekty pocisków wystrzeliwane przez gracza draw_sprite(sCross, 0,x + lengthdir_x(150, image_angle),y + lengthdir_y(150, image_angle));
  10. Po chyba trzy miesięcznej przerwie wróciłem do mojego projektu 1bit_arena, który miał powstać w weekend Dzisiaj zrobiłem minimape, która nawet fajnie działa, tylko zlewa się ze ścianami :/
  11. O kurczę dziękuje za tak obszerne wyjaśnienie, podziwiam^^ Już mniej więcej wszystko ogarniam, dziękuje
  12. Dziękuje! Chodzi dokładnie tak, jak chciałem. Patrząc i analizując Twój kod, widziałem gdzie popełniałem błędy i nie rozumiem tylko tej linijki (prawdopodobnie dlatego, że występują tam dwie funkcje matematyczne ._.) // glowna funkcja przesuniecia var factor = sin((distance / start_distance) * pi); // i tu też do końca nie wiem, dlaczego mnożymy przez pi var maxlen = sqr(log2(start_distance)); // <---------------- TEJ var offx = lengthdir_x(maxlen * factor, angle90); var offy = lengthdir_y(maxlen * factor, angle90); Wynik bardzo mnie zadowala, plus dodałem wybieranie czy pocisk ma lecieć z dołu czy z góry :> https://imgur.com/a/60zCDPN
  13. Eh, poddaje się ._. Próbowałem to ogarnąć przez te 3 dni wraz z poradnikiem https://csanyk.com/2012/10/game-maker-wave-motion-tutorial/ ale no nie wychodzi mi to. Mógłbyś dać swój przykład na inny hosting, bo nie mam do niego dostępu Chcę jeszcze troszkę popróbować. Dzięki za pomoc^^
  14. Siemanko^^ Jako, że jestem burak z matmy, potrzebuję pomocy. Chcę zrobić aby wróg atakował gracza magicznym kółkiem (super zaklęcie). Ale nie chcę tego robić w prosty sposób, jak: speed = 8; direction = point_direction(x, y, oPlayer.x, oPlayer.y); Graficznie: https://imgur.com/a/1qfdfk3 Mam na myśli, żeby zrobić to po linii pochyłej: https://imgur.com/lqZjX3M Próbowałem coś z sinusami, ale marny wynik (przypominam o beztalenciu do matematyki). Później coś zaświtało i całkiem przyjemny efekt wyszedł za pomocną ścieżek: ///rysuj sciezke var _pd = point_distance(x,y, oPlayer.x, oPlayer.y); bullet_path = path_add(); path_add_point(bullet_path, x, y, 100); //start path_add_point(bullet_path, x+ _pd/2, y+50, 100); //srodek path_add_point(bullet_path, oPlayer.x, oPlayer.y, 100); //koniec path_set_kind(bullet_path, true); path_set_precision(bullet_path, 8); path_set_closed(bullet_path, false); path_start(bullet_path, speed, path_action_stop, 0); i wyglądało to, jak na gifie powyżej, aczkolwiek tylko i wyłącznie wtedy, kiedy byłem z wrogiem w tej samej linii, czyli nasze y było takie samo, bądź zbliżone. Pobawiłem się chwilę z path_rotate ale nic z tego. Jakieś malutkie nakierowanie, jakby to zrobić? PS: przy okazji możecie mi powiedzieć jak osadzać gify, żeby nie było hiperłączy
  15. Cóż, to nie bomba graficzna, ale mój zamiar jest taki, żeby w końcu zrobić fajnie grywalną, prościutką grę z dodatkiem tabeli wyników na www, gdzie również ma byś osadzona gra. Miałem zamiar ją zrobić w weekend sobota-niedziela, ale jednak nawet na taką prostą grę potrzeba czasu... a przynajmniej ja go potrzebuje https://media.giphy.com/media/4EFt4z4qlzzslDU8ua/giphy.gif
  16. Tak jak napisałem wyżej, musisz zrobić coś na podobieństwo colission_rectangle, czyli wywal całkiem swoje collision_line, nie używaj tego. Nie wiem co znaczą twoje zmienne, ale jak na mój rozum, drugiego ifa też trzeba się pozbyć, zostaje tylko ten pierwszy (cokolwiek robi). Coś takiego, powinno być. if( (x >= vx and x <= vx+vw) and (y >= vy and y <= vy+vh) ) { //kod na strzelanie w gracza event_user(1) // shoot (co to jest?) shooting = true // do uzyskiwania wyniku prawda/fałsz nie używaj int'a tylko bool'a - zajmuje mniej komórek pamięci w Ramie (optymalizacja) } else { //kod na cokolwiek, kiedy gracza nie widzi shooting = false } Pokombinuj na różne sposoby. Ogólnie, mój kod: (x >= vx and x <= vx+vw) and (y >= vy and y <= vy+vh) Zwraca Ci wartość z czy przeciwnik wchodzi w view gracza. Dając "else" po tym if'ie, negujesz tą wartość, czyli wychodzi "false" Przypatrz się dobrze, spróbuj zrozumieć
  17. Nope, w Create sprawdzi kod tylko raz przy tworzeniu instancji. Gra musi sprawdzać to co klatkę tak, żeby nie przeoczyła momentu kiedy wróg pojawia się w polu widzenia gracza, tak więc wklejasz to w Step. Jedynie co możesz dać w Create to zmienne, ale równie dobrze zamiast zmiennych własnych, możesz napisać od razu view_xview zamiast vx.
  18. Lolik, musisz zrobić coś w stylu collision_rectangle, tylko na view'a. Dam Ci prosty kod, zmień go na własne potrzeby (uwzględnij spirte_width wroga itp) vx = view_xview; vy = view_yview; vh = view_hview; vw = view_wview; if( (x >= vx and x <= vx+vw) and (y >= vy and y <= vy+vh) ) { //kod na strzelanie w gracza } else { //kod na cokolwiek, kiedy gracza nie widzi }
  19. No cóż, z pierwszym Ci nie pomogę ale powinienem mieć rozwiązanie na drugi problem. W twoim kodzie jak już w coś "przydzwonisz", to ustawiasz friction obiektu na 3, dlatego nie możesz dalej ruszyć pojazdem. Musisz ustawić friction z powrotem na 0. Proponuje alarmy, np: Create: alarm[0] = -1; Kolizja: if(speed > 1) { move_bounce_all(1) speed-=5 friction=3 alarm[0] = 0.5*room_speed; } Alarm[0]: friction = 0; W takim wypadku, po pół sekundy od kolizji znowu będziesz mógł prowadzić pojazd - czysto teoretycznie, bo nie sprawdzałem w praktyce, ale zapewne coś tą metodą osiągniesz
  20. Zawsze wiedziałem, że programiści są nienormalni ale pisanie ekwipunku tylko to potwierdziło dzięki za odpowiedź
  21. Czy siatki ds_grid są globalne czy lokalne? Chodzi mi o to, że jeśli w: object1 - create grid = ds_grid_create(width, height); object2 - create grid = ds_grid_create(width, height); To będą się one w jakiś sposób gryzły? czy po prostu jak są w oddzielnych obiektach to siebie nie widzą.
  22. Raczej nie chodzi o jakość grafiki tylko o rodzaj. Masz fotorealizm, pixelart, typu borderlands (tak, nie wiem jak się nazywa). Niedawno wyszedł cuphead i pierwsze co słychać o tej grze, to o grafice właśnie, że jest jedyna w swoim rodzaju i to także przyciąga ciekawość ludzi.
  23. Jak dołączyć float do int? Zmienić int w float, ale tak, żeby ten int było po przecinku. Coś takiego: zmienna = 0.hspeed zmienna = 0. && hspeed zmienna = 0. and hspeed zmienna = 0.+hspeed (tak wiem, to jest bez sensu, bo to zwykłe dodawanie dwóch liczb) Chodzi mi o to, żeby liczba przed przecinkiem zawsze wynosiła 0
  24. Mistrzu, to wygląda przepięknie. Ja nie zrobiłbym czegoś takiego w tydzień a zgaduje, że zajęło Ci to mniej więcej 30 minut. Widzę, że trygonometria ma ogromny potencjał, więc czas na powtórki z książką od matematyki. Jedno mnie tylko zastanawia. Jak uporać sobie z maską, np tej piłki co skacze. Jej maska ciągle jest na jednej wysokości, gdy sprite hula w górę i w dół. Ale z tym mam nadzieje jakoś sobie poradzę
  25. Niestety przykładu nie mogłem pobrać, bo moje konto nie jest do tego upoważnione ( Kod błędu: 2C171/1 ) Ale ogarnąłem mniej więcej o co chodzi Jeśli postać ma chodzić po sinusoidzie, to taki efekt osiągnąłem. Za chwile zacznę się z tym bawić i pewnie dojdę do jakiegoś ciekawszego efektu. Dziękuje za rady EDIT: Połączyłem jeszcze pomysł od Threefa z nogami i to wygląda naprawdę nieźle. Podoba mi się! Dziękuje PS: Tak, jestem 97 ale mam troszkę trudności z matmą. Na maturze zabrakło mi tylko jednego punktu, żeby ją zdać
×
×
  • Dodaj nową pozycję...