Skocz do zawartości

Cała aktywność

Kanał aktualizowany automatycznie

  1. Wczoraj
  2. Niestety to jest związane z precyzją depth buffera, oddalone "piksele" nie mają dostatecznej precyzji aby nałożone na siebie elementy rysowały się w odpowiedniej kolejności, tzw. z-fighting https://en.wikipedia.org/wiki/Z-fighting i nie ma to żadnego związku z rozmiarem tekstur Jednym ze sposobów (i chyba najprostszym) może być przesunięcie elementów o niewielką wartość, aby tekstury rysowane d3d_draw_wall nie nachodziły idealnie na siebie.
  3. W gierce 3d mam sporo budynków różnej wielkości i pod różnym kątem porozrzucanych po planszy. gdy jestem blisko jakiegokolwiek budynku to wygląda on dobrze, natomiast jeżeli sie oddale od niego dosyć daleko to jego boki migotają, nakłądaja sie na siebie textury scian. bloki sa zbudowane z 4x d3d_draw_wall textury starałem się by miały wymiary 256x256 lub 256x128 pix. Idzie to jakoś poprawić ?
  4. Ostatni tydzień
  5. Jeżeli chcesz zamienić bieguny wartości 0.0 - 1.0 oraz 1.0 - 0.0 w oparciu o jedną zmienną, to najprościej użyć odejmowania, np.: // W zdarzeniu Create inicjujemy potrzebne nam zmienne // Licznik czasu oraz czas w jaki ma zmienić się alpha np. w 2 sekundy sekunda = 0.0; fade_time = 2.0; // Przy aktualizacji klatki dodajemy kolejne wartości zmiennej sekunda w zdarzeniu Step // Ale uwaga! Liczymy cząstkową sekundy na daną klatkę rysowania (tzw. delta time) var delta = 1.0 / room_speed; sekunda += delta; // Teraz możemy policzyć przezroczystość sprite'ów w zdarzeniu Step // Dodatkowo wa
  6. Dziękuję za pomoc:-) Mam jeszcze dwa pytania. 1. Użyłem zgodnie ze wskazówkami sprita obiektu ale nadal tło rysowane na surface jest przed odbiciem lustrzanym bohatera a powinno być za nim. głębię ustawiłem prawidłową na obiekcie obj_lustro które ma +10 a obiekt obj_tlosurface ma głębię ustawioną na +20 czyli jest dalsze niż odbicie lustrzane bohatera. 2. Jak uzyskać efekt alpha jak gracz pojawi się przy lustrze? Nie wiem jak to opisać..Tak na prosty rozum. teraz tło pojawia się od razu jak gracz podejdzie do lustra i tak ma zostać tylko ab
  7. Jak chcesz sprite obiektu który nie istnieje w roomie to zrób tak: if (instance_exists(obj_tlosurface)) { spriteToDraw = obj_tlosurface.sprite_index; } else { targetObject = instance_create(0,0, obj_tlosurface); spriteToDraw = targetObject.sprite_index; with (targetObject) { instance_destroy(); } } I sprite który chcesz rysować masz w zmiennej spriteToDraw
  8. Hmmm nie bardzo rozumiem z tą zmienną tymczasową. Mógłbyś to wyjaśnić 🙂 Dziękuję
  9. Chciałbym aby w ciągu 60 sekund jeden obiekt pojawił się, a drugi zniknął przy uzyciu alpha, oczywiście uwzjgędniając w obliczeniu by nie dzielic przez zero. Drugi obiekt jakos nie działa.. nie mam pomysłu na niego sekunda+=1 if sekunda>59 end draw_set_alpha(sekunda*0.016666) draw obj1 draw_set_alpha(1/sekunda) draw_obj2
  10. Nie można rysować sprite obiektu, a jedynie istniejącej instancji. Albo uzyj nazwy sprite bezpośrednio, albo zrób jakiś fallback do zmiennej tymczasowej, że jak instancja jest to weź z niej sprite a jak nie ma to jakiś jaki masz ochotę
  11. Nie wiem jak było w innych wersjach i tak dalej w obecnej nie. Już poprawiła mi jedna z użytkowniczek innego forum. Trzeba było dopisać ręcznie jakieś linijki do pliku csproj i dodać jakieś atrybuty do kompilacji i działa już i tu i tu.
  12. Nie to mam na myśli 🙂 pozycje sprite ustawie sobie. Chodzi o to,że kiedy w funkcji draw_sprite_ext odwołuje się do obiektu obj_tlosurface dodając po kropce sprite_index to nie chce mi rysować na surface sprite z tego obiektu. Musiałem też dodać funkcje instance_exists bo wywalało błąd,że taka instancja nie istnieje. Co robię tu nie tak,że nie chce mi się z tego obiektu sprite rysować? var Rysuj = 0; with (obj_hero){ if distance_to_object(obj_lustro) <= 20{ Rysuj = 1; } }
  13. Nie mam pojęcia jak wyglądają Twoje sprity, więc cieżko mo oceniać, czy trzeba coś przesuwać - to już musisz stwierdzić własnym wzrokiem
  14. Słusznie 😉 zostanę przy surface To jednak użyje to na obiekcie wtedy będę mógł dodać głębie. Teraz tak to będzie wyglądać mniej więcej tak? zerkniesz? var Rysuj = 0; with (obj_hero){ if distance_to_object(obj_lustro) <= 20{ Rysuj = 1; } } if Rysuj { draw_sprite_ext(obj_tlosurface.sprite_index,0,x ,300,image_xscale,image_yscale,0,image_blend,.5) } nie wiem czy też mam dodać obj_tlosurface do wartości x i y
  15. Jeśli część ma być pod, a część nad, to nie da rady na jednym surface. Pozostaje faktycznie dać drugi obiekt na innym layerze / innym depth, który jest pod wszystkim. Jeśli jednak to jest tło, to niekoniecznie trzeba używać tego samego surface, można draw_sprite_part spróbować, ale oczywiście tutaj będzie sporo zabawy w obliczenie prawidłowego rozmiaru. Może łatwiej będzie jednak to surface malować, skoro już dobrałeś parametry
  16. Rozumiem.Dzięki za objaśnienie działania tej zmiennej globalnej. Dobra pomyślałem sobie,że fajnie by było aby przedstawić na lustrze nie tylko odbicie bohatera czy też pocisk jakim strzela ale nieistniejący fragment scenerii na tym surface który np jest na przeciwko lustra fakt gra jest 2D i ta ściana nie istnieje ale załóżmy,że chce ją przedstawić w odbiciu lustrzanym dodałem taki kod do zdarzenia draw w obj_lustro var Rysuj = 0; with (obj_hero){ if distance_to_object(obj_lustro) <= 20{ Rysuj = 1; } }
  17. Możesz za pomocą draw_surface_part narysować tylko część. Nie, ta zmienna będzie pilnować, żeby tylko jedno surface istniało. Surface zostaje skasowane przez GPU gdy włącza się wygaszacz albo komputer jest usypiany, lub gdy wyłączasz grę. Dlatego nie trzeba robić free w tej sytuacji, skoro i tak używasz tego surface często. surface_free raczej używa się, gdy wiesz, że już danego surface nie potrzebujesz (do końca gry, albo przez kilka sekund). Co do ponownego rysowania - jest funkcja draw_clear i draw_clear_alpha która pomaga wyczyścić surface.
  18. Czyli ta cała jedna zmienna globalna będzie pełnić rolę podobną jak funkcja surface_free? tyle,że będę mógł użyć/przenieść powierzchnie na dowolny obiekt? Dobrze to brzmi sensownie.A takie pytanie mam chociaż już wcześniej je zadawałem. W tech chwili mam stałe parametry powierzchni 300,200 bo też taki sprite powierzchni ma wymiary i na tej powierzchni tworzy się obecnie lustro. I teraz tak: Załóżmy że lustro i sprite powierzchni ma wymiary 32x32 i mogę go rozciągać na dowolny rozmiar na planszy (room edytorze) I w miejscu gdzie nastąpi to rozciągnięcie sp
  19. Jeśli będzie jedno surface, to nie będzie wyciek. Create: global.costam = -1; Draw: if (!surface_exists(global.costam)) { global.costam = surface_create(200,200); } surface_set_target(global.costam); ... surface_reset_target(); I żadnego wycieku nie ma, oraz możesz dowolnie używać tego surface ponownie (powtarzasz tylko kod z draw, już bez create, bo wtedy właśnie byłby memory leak).
  20. A czy przypadkiem konstruktor ChromeDriver nie przyjmuje pełnej ścieżki do pliku? Sam nie korzystam z Selenium w C#, ale podejrzałem inne konfiguracje i wszędzie z tego co widzę ludzie podają pełną ścieżkę, np.: https://tecadmin.net/setup-selenium-chromedriver-on-ubuntu/ (Przykład z Java, ale to chyba bez znaczenia) E: Nawet podejrzałem w dokumentacji selenium i jest napisane o podaniu pełnej ścieżki do katalogu z ChromeDriver.exe https://www.selenium.dev/selenium/docs/api/dotnet/html/M_OpenQA_Selenium_Chrome_ChromeDriver__ctor_5.htm
  21. Tak tylko jak nie usunę powierzchni z pamięci to nastąpi wyciek tej pamięci... A tego trzeba pilnować no dobra to sobie to odpuszczę. A mam pytanie... jak narysować na tej samej powierzchni kawałek niewidocznej scenerii która na przykład jest na przeciwko lustra,ale w rzeczywistości nie istnieje,bo to gra 2D widziana z perspektywy klasycznych platformówek jak Mario itp. Mam coś takiego na myśli gracz podchodzi do lustra jest on pokazany w lustrze jak jest teraz obecnie oraz kawałek niewidocznej nieistniejącej scenerii w lustrze która ma lub nie ma parallaxe.
  22. Jak nie będziesz na końcu usuwał tego surface z pamięci funkcją surface_free() to będziesz mógł używać go gdzie ci się podoba, w dowolnym obiekcie o ile zmienną _surf zrobisz globalną. Ale mankament jest taki że trzeba się zabezpieczyć przed niespodziewanym usunięciem go z pamięci vram. Dzieje się to niezależnie od gry. Np może się wyczyścić jak zminimalizujesz grę. Jak pamięć karty graficznej dobija do końca itd.
  23. Dziękuje;-) usunąłem with faktycznie bez sensu była ta funkcja jak poniżej była pętla Hmmm... wszystko działa jak należy i na chwile obecną tak to wygląda ///lustro // rysuje sprite lustra draw_sprite(sprite_index,0,x,y); // pozycja lustra _xx = x; _yy = y; _surf = surface_create(300,200); // rozmiar lustra surface_set_target(_surf); draw_clear_alpha(c_black,0); draw_sprite_ext(obj_hero.sprite_index,obj_hero.image_index,obj_hero.x - _xx ,obj_hero.y - _yy - 70,obj_hero.image_xscale,obj_hero.image_yscale,0,image_blend,.5) // rysujemy pocisk na surface var _xx1 = x
  24. Wywal całkowicie with obj_pocisk i zostaw sam for bo masz pętle w pętli i dla każdego pocisku rysowane są wszystkie pociski Jak chcesz z edytora ze skalowaniem to nie jestem pewny ale powinno dać się obliczyć wielkość surface w create z sprite_width x sprite_xscale i tak samo z Y Ale nie mogę tego potwierdzić bo w GM ostatnio cokolwiek robiłem chyba w 2015r
  25. Nie znam się na Selenium, ale nauczony tym jak Linuksy obsługują lokalizowanie programów sugerowałbym dodanie folderu z driverami do zmiennej PATH. https://www.selenium.dev/documentation/en/webdriver/driver_requirements/
  26. edit 1 Ok działa przepraszam ja tu strzeliłem babola..zamiast rysować sprita to rysowałem obiekt;-) Podmieniłem też funkcje z draw_sprite na draw_sprite_ext aby uzyskać ten sam efekt co ze spritem bohatera czyli alpha i image_blend Musiałem też dodać linijkę with obj_pocisk { Twój kod } Jeszcze raz wielkie dzięki za pomoc;-) Mam jeszcze jedno pytanie.. zadałem je w sumie na początku tego wątku;-) Chciałbym po odznaczeniu w opcjach przy obiekcie lustro opcji visible aby rysował się na dowolnych obiekc
  1. Pokaż więcej elementów aktywności
×
×
  • Dodaj nową pozycję...