Skocz do zawartości

Ranking


Popularna zawartość

Wyświetla najczęściej polubioną zawartość od 10/13/18 uwzględniając wszystkie działy

  1. 4 punkty
  2. 4 punkty
    ostatni post ze stycznia widzę, welp spoczko się gra na switchu, fajny oldschoolowy klimacik jest
  3. 3 punkty
    Pierwszy autoportret na podstawie lustra ustawionego obok.
  4. 3 punkty
    Ostatnie dwa tygodnie były masakryczne pod kątek ilości pracy, ale w końcu skończyłem swój algorytm do którego podchodziłem już z 4 razy
  5. 2 punkty
    @Nirvan Pełna profeska, gratuluję, a artykuł też spoko jest @Wojzax Fajnie to wygląda, a animacje też są spoko Ja natomiast żeby odskoczyć od czołgów, gdzie przepisałem system kolizji, zaimplementowałem FSM, zoptymalizowałem rysowanie (custom-izowany silnik Godota) i napisałem system rozgrywki turowej, to zająłem się nowym projektem na GitHub GameOff, Na razie mam jakiś biedny system platformówki: Czołgi piszę w Godot Engine 3.0, natomiast ten projekt jest trochę taki eksperymentem z wersją 3.1. Generalnie rozgrywka będzie polegać na toczeniu walk między papierowymi wycinankami na stole. Jeszcze nie mam jakiegoś szczególnego opisu fabuły i samej rozgrywki, ale inspirować się będę trochę castlevanią. Tekstury darmowe z internetu (https://hdrihaven.com/ i https://freepbr.com). Postać znaleziona na google w agregacie śmiesznych obrazków, także nie wiem do kogo należy. Ale postać mam zamiar zmienić na swoją narysowaną, także nie zostanie na długo.
  6. 2 punkty
    instance_destroy(obj_zloto) zadziałałoby w GMS2
  7. 2 punkty
    przełączanie między bohaterami o takie o
  8. 2 punkty
    Super, że działa, a co do tych dwóch linijek kodu: var factor = sin((distance / start_distance) * pi); Jak podzielimy start_distance przez distance, otrzymamy wartości 0 - gdy czar jest najdalej od gracza i 1 - gdy pocisk jest najbliżej gracza, jest to funkcja liniowa i wygląda tak: Jak widzisz, funkcja liniowa nie jest za ciekawa, ale przy użyciu sinusa, można uzyskać taki efekt: Funkcja sin jest funkcją trygonometryczną i przyjmuje wartość w radianach, powyższy wykres przedstawia wartości od 0 stopni do 360 stopni, odpowiednio w radianach będzie to 0 radianów i 2*PI radianów. Wartość tej poprzedniej liniowej funkcji (od 0 do 1) mnożymy przez wartość PI (180 stopni, od 0 do liczby PI), wstawiamy tę wartość do funkcji sin i otrzymujemy interesujący nas łuk: Funkcja sinusowa zwróci nam wartość od 0 do 1 - gdzie 0 jest na początku łuku, 1 jest środkiem i 0 również występuje na końcu łuku. Jak widzisz, funkcję liniową zamieniliśmy na krzywiznę. Teraz przejdźmy do drugiej funkcji: var maxlen = sqr(log2(start_distance)); Ta funkcja to nic innego jak logarytm naturalny do kwadratu. Generalnie to tę funkcję można zmieniać wedle uznania. Odpowiada ona za maksymalne wychylenie na naszym łuku. Jeżeli gracz będzie bliżej czarownika, to odchylenia będzie mniejsze, jak się gracz oddali od niego, to zwiększymy odpowiednio maksymalne odchylenie i pocisk będzie leciał po większym łuku. Funkcja logarytmiczna do kwadratu wygląda tak: Możesz też np. użyć pierwiastka sqrt, której wykres funkcji wygląda tak:
  9. 1 punkt
    Modeluję sobie postaci a'la Disney/Pixar. Celuję w coś jak modele z gry Spy Party
  10. 1 punkt
    Nigdy się nie wypowiadałem na temat twoich prac bo zwyczajnie nie trafia do mnie ten styl, nie rozmyślałem też nad tym co dana praca ma przedstawiać ale kurde ten autoportret to mi się bardzo podoba, może dlatego że odchodzi trochę od stylu.
  11. 1 punkt
    Coraz bardziej dopieszczone te artworki, podoba mnie się.
  12. 1 punkt
    Może ci się tak wydawać bo masz pewnie okrągłe maski kolizji. Ale one zupełnie inaczej działają place_meeting > https://docs2.yoyogames.com/index.html?page=source%2F_build%2F3_scripting%2F4_gml_reference%2Fmovement and collisions%2Fcollisions%2Fplace_meeting.html collision_circle > https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/movement and collisions/collisions/collision_circle.html Co ważniejsze, place_meeting zwraca true lub false a collision_circle zwraca id obiektu z którym nastąpiła kolizja
  13. 1 punkt
    Funkcja place_meeting bierze pod uwagę maski obu instancji, maskę obj_pocisk i obj_wrog. Jeszcze istnieje taka funkcja jak position_meeting do sprawdzania kolizji tylko punktowo
  14. 1 punkt
    @I am Lord Czołgi poza technicznym aspektem, to gameplay-owo dalej ssie, więc nie ma czego tak naprawdę pokazywać, ale pochwalę się chociaż dość szybkim sposobem na zniszczalny teren Działa stabilnie na androidzie, co mnie cieszy A tutaj dodatkowo podsyłam gifa, co u Papervanii się dzieje: Wyłączyłem DOF, bo półprzezroczyste obiekty nie zapisują się do depth buffora, co bluruje mi też te obiekty :/
  15. 1 punkt
    Ewentualnie możesz zachować opcję z solid, ale w obiekcie obj_pocisk, w Step Event musiałbyś dodać kod odpowiedzialny za sprawdzanie kolizji zamiast w Collision Event: // sprawdzamy kolizje z wrogami with (obj_wrog) { if (place_meeting(x, y, other.id)) { // kolizja nastąpiła, ale w 2D, sprawdźmy wysokość pocisku if (other.z < 24) { with (other) { // niszczymy pocisk instance_destroy(); } // niszczymy wroga instance_destroy(); // przerywamy blok 'with' break; } } }
  16. 1 punkt
    Idzie to zrobić w ten sposób, ale to jest mało optymalne rozwiązanie i bardziej skomplikowane W zasadzie wystarczy wczytać stronę i wychaczyć treść odpowiedniej sekcji na stronie(tej która zawiera godzinę).
  17. 1 punkt
    Tytuł: Highway Madness Gatunek: Arcade Opis: Witam, to moja pierwsza gra którą ukończyłem, właściwie jeszcze nie w 100% ale myślę że może iść w market i potem dodam kolejne rzeczy. Gra polega na skakaniu z samochodu na samochód, w ten sposób zdobywamy punkty. Za każdy skok bez wchodzenia do auta dostajemy 2x punktów. Do tego dochodzą rzeczy jak near dead - punkty zdobyte za wyskoczenie w ostatniej chwili przed bombą czy long jump. Pracowałem wcześniej nad jakimiś RPGami czy innymi open worldami ale w pewnym momencie zawsze mnie to przerastało, więc postanowiłem w końcu zrobić coś prostego do końca. Oto efekt. Gra się jednym palcem. Download: https://drive.google.com/open?id=17JuWFPVMvGnXiBc8ypnRWIEQIBxmb-Yo Rozmiar pliku: 65Mb Autorzy: Programowanie:Ja Fabuła:Brak Grafika:Z netu Muzyka:Royality free z netu Screeny:Wrzucam filmik, screeny i tak nic nie powiedzą.
  18. 1 punkt
    Połowa ludzi tam to pewnie hindusi, także Twój angielski i tak jest lepszy niż ich
  19. 1 punkt
    Cześć, WordPress nie posiada hook-ów umożliwiających monitorowanie działania każdej z wtyczek, dlatego zużycie CPU czy pamięci pojedynczej wtyczki jest prawdopodobnie niemożliwa (nie do końca niemożliwa, ale wymagałoby to ingerencji w core wordpressa ). IMO wystarczyłoby monitorowanie wywołań akcji (do_action i apply_filters) każdej z wtyczek i np. liczyć czas, ile zajmują poszczególne akcje (np. za pomocą microtime) i ile pamięci zajmują (np. memory_get_peak_usage), niestety bez dostępu do shella nie można sprawdzić statusu CPU. Ew. modyfikacja pluginu Elementor i liczenie ww. wartości.
  20. 1 punkt
    dobra już mam ! with(obj_zloto) instance_destroy();
  21. 1 punkt
    Cześć, możesz użyć wyrażenia with i wewnątrz bloku wywołać funkcję instance_destroy: with (obj_zloto) { instance_destroy(); }
  22. 1 punkt
    tak, no bo jak by to mialo wygladac niby, "musze ci udowodnic, ze to, czego sluchasz mi sie nie podoba"? xd jak można przeznaczac czas i energie na to, ze ktos sobie slucha muzyki
  23. 1 punkt
    Cześć, przy użyciu sinusa i lengthdirów można spokojnie taki efekt uzyskać. Zrobiłem mały przykład, jak można to ugryźć z sinusem. Spellcaster.gmz Generalnie, to na początek tworzymy dwie zmienne wirtualnej pozycji pocisku na scenie ghost_x=x i ghost_y=y, liczymy startową odległość między początkową pozycją pocisku a jej celem i zapisujemy do zmiennej lokalnej start_distance. Następnie w step należy policzyć aktualną odległość między pociskiem a celem i na podstawie wyliczonej wartości stworzyć zmienną factor wykorzystując sinusa: var factor=sin((distance/start_distance) * pi) - ta zmienna ma wartość od 0 (pozycja startowa/końcowa) do 1 (w środku drogi) i będzie odpowiadać za łuk pocisku. Do wyliczenia łuku użyjemy lengthdirów: var offsetx=lengthdir_x(<maksymalne_wygiecie> * factor, <kierunek_pocisku> + 90), dla lengthdir_y funkcja wygląda tak samo. Na koniec ustawiamy pozycję x,y z przesunięciem: x=ghost_x+offsetx oraz y=ghost_y+offsety i gotowe.
  24. 1 punkt
  25. 1 punkt
    No ale dlaczego, jak inaczej zakryjesz przed graczem to co za ścianą? Trochę jeszcze miałem problemów ale chyba jest ok twitter.com/mothonedev/status/1048259981202673664
  26. 1 punkt
    No z rzutem izometrycznym to podejrzewam, że sprawa nie jest łatwa, nieźle, widzę że gierka będzie we współczesnym stylu Ja jednak pozostanę przy TOP-Down i realiach II wojny Dołożę nowy zrzut z wersji testowej. Z racji, że będę robił konwersję na GMS, pracuję na razie głównie nad grafiką, zmieniłem trochę kolorystykę Wermachtu, na bardziej realistyczną, krew również ma ciemniejszą barwę, jest jej więcej i co najważniejsze, zaokrągliłem trochę ulice, bo były zbyt kanciaste. Jeśli po ustawieniu wszystkiego gra będzie grywalna(optymalizacja) to wstawię kolejne demo.
  27. 1 punkt
    Trochę nowych rzeczy, ale zamiast wziąć się za poważne strzelanie musiałem zrobić eksperyment pseudo3d w formie tych neonowych słupów
  28. 1 punkt
    Przepraszam, masz rację.
  29. 1 punkt
    Tak wiem że w GMS1 był ten substytut prawdziwych macierzy ale no GMS2 ma już w pełni funkcjonalne. Anyway udało mi się ale to jest bez sortowania depth spritów więc nachodzą na siebie brzydko: Taki sobie o ludzik bez rąk. Ma tylko 2 nogi które się kręcą jak koła no i ma głowę. Gify są z animacją nóg i bez a kod wygląda tak: yaw += 4; legAnim -= 28; // root body var center = matrix_build(x, y, z, 0, 0, yaw, 1, 1, 1); var posArray = matrix_transform_vertex(center, 0, 0, 0); draw_circle_color(posArray[0], posArray[1]+posArray[2], 4, c_red, c_red, 0); // ROOT position // leg center var legCenter = matrix_build(0, 0, 0, legAnim, 0, 90, 1, 1, 1); var vLegCenter = matrix_multiply(legCenter, center); var posArrayLegCenter = matrix_transform_vertex(vLegCenter, 0, 0, 0); // leg right var legR = matrix_build(-16, 0, 16, 0, 0, 0, 1, 1, 1); // leg left var legL = matrix_build(16, 0, 16, 0, 0, 0, 1, 1, 1); // draw legs var vL = matrix_multiply(legL,vLegCenter); var vR = matrix_multiply(legR, vLegCenter); var posArrayL = matrix_transform_vertex(vL, 0, 0, 0); var posArrayR = matrix_transform_vertex(vR, 0, 0, 0); draw_sprite(sPoint, 0, posArrayL[0], posArrayL[1]+posArrayL[2]); draw_sprite(sPoint, 0, posArrayR[0], posArrayR[1]+posArrayR[2]); draw_line(posArrayLegCenter[0], posArrayLegCenter[1]+posArrayLegCenter[2], posArrayL[0], posArrayL[1]+posArrayL[2] ); draw_line(posArrayLegCenter[0], posArrayLegCenter[1]+posArrayLegCenter[2], posArrayR[0], posArrayR[1]+posArrayR[2] ); // face var height = 24; var face = matrix_build(24, 0, -height, 0, 0, 0, 1, 1, 1); var vFace = matrix_multiply(face, center); var posArrayFace = matrix_transform_vertex(vFace, 0, 0, 0); draw_sprite(sPoint, 0, posArrayFace[0], posArrayFace[1]+posArrayFace[2]); draw_line_color(posArray[0], posArray[1]+posArray[2], posArrayFace[0], posArrayFace[1]+posArrayFace[2], c_red, c_red); var posArrayH = matrix_transform_vertex(center, 0, 0, -height); draw_line_color(posArray[0], posArray[1]+posArray[2], posArrayH[0], posArrayH[1]+posArrayH[2], c_red, c_red); draw_line_color(posArrayFace[0], posArrayFace[1]+posArrayFace[2], posArrayH[0], posArrayH[1]+posArrayH[2], c_red, c_red); Edit: Fajnie teraz można płynnie przechodzić z widoku izometrycznego w top-down spłaszczając skalę Z roota: var center = matrix_build(x, y, z, 0, 0, yaw, 1, 1, (1+sin(current_time*0.001))/2);
×