Skocz do zawartości

Fizyka wody 2D


MrJuliusz

Rekomendowane odpowiedzi

Witajcie

 

Mam mały problem z moją fizyką wody, wiem jak stworzyć prymitywną fizykę wody, polega na sprawdzaniu czy następne 32 pixele są wolne jeżeli tak to tworzy wodę,wszystko działa na alarm

oto kod:

if place_free(x,y+32)
{
    instance_create(x,y+32,obj_water)
}
if place_free(x+32,y)
{
    instance_create(x+32,y,obj_water)
}
if place_free(x-32,y)
{
    instance_create(x-32,y,obj_water)
}

Jest jeden mały problem, czyli optymalizacja - Po kilku sekundach gra zaczyna się wieszać. Wiem że to może być spowodowane tym że każdy objekt sprawdza czy może zostać "Rozlany". Niestety nie jestem dobrym programistą i nie potrafię tego problemu rozwiązać więc kieruje pytanie do ludzi którzy mają większą wprawę w GML

 

Dziękuje za każdą pomoc

 

MrJuliusz

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli gra spowalnia to znak że trzeba włączyć profiler i sprawdzić gdzie. Oraz to że muszę dokończyć dla was tekst o tym jak profilera używać.

https://docs.yoyogames.com/source/dadiospice/001_advanced use/profiling.html

Nie możesz próbować szukać rozwiązań problemu jeżeli nie wiesz co go powoduje.

 

- Jeżeli jest za dużo obiektów to możesz spróbować dezaktywować albo ukrywać te które nie są potrzebne.

- Jeżeli za często jest sprawdzane czy możesz stworzyć wodę to możesz to ograniczyć

- Może elementy tworzą się nie tam gdzie chcesz? Na przykład poza room?

 

Jedno co na pewno możesz zrobić to podejście identyczne jak jest w Minecraftcie. Zrób stan który oznacza że woda się updatuje. Coś takiego

create:

update=true

 

 

step:

if(update)
{
if place_free(x,y+32)
{
    instance_create(x,y+32,obj_water)
}
if place_free(x+32,y)
{
    instance_create(x+32,y,obj_water)
}
if place_free(x-32,y)
{
    instance_create(x-32,y,obj_water)
}

update = false
}

 

W ten sposób sprawdzenie wykona się tylko raz. Jeżeli chcesz z jakiegoś powodu ponownie wykonać sprawdzenie, bo np zabrałeś wodę, to wystarczy że w którymś obiekcie wody znów zmienisz update=true

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