13.07.2026 16:05

Silnik gier: kto jest teraz w strefie (Area2D)

⏱️ 2 min read
Share:

Strefy w silniku gier 2D Moonlight Studio od dawna zgłaszały wejścia i wyjścia sygnałem — „ktoś wszedł", „ktoś wyszedł". To świetne do pułapek i checkpointów, ale ogromna część logiki gry potrzebuje czegoś innego: odpytania w danej chwili, kto jest w środku TERAZ.

Pytasz, gdy chcesz

-- obrażenia w promieniu wybuchu, co klatkę
for _, cel in ipairs(mp.bodies_in_area(wybuch)) do
    zadaj_obrazenia(cel, 10)
end

-- regeneracja tylko w strefie bezpiecznej
if mp.is_body_in_area(strefa_bezpieczna, gracz) then heal(gracz) end

mp.bodies_in_area(strefa) zwraca listę obiektów aktualnie nakładających się na strefę; mp.is_body_in_area(strefa, obiekt) sprawdza pojedynczy. Bez prowadzenia własnego zbioru na sygnałach — silnik robi to za ciebie.

Pod maską: żywa lista karmiona zdarzeniami

Lista jest utrzymywana z dokładnie tych samych zdarzeń, które emitują sygnały wejścia/wyjścia — więc odpowiedź zapytania jest zawsze spójna z tym, co usłyszał twój handler. Dwa detale, które łatwo przeoczyć, a które psują naiwną implementację:

  • Wiele kolizerów jednej strefy. Jeśli strefa składa się z kilku kształtów, obiekt stojący na styku dwóch z nich nie znika z listy, gdy opuści tylko jeden — zliczanie nakładania pilnuje, by wypadł dopiero po wyjściu ze wszystkich.
  • Obiekty, które znikają lub się przenoszą. Pocisk skasowany w strefie albo przedmiot podniesiony i przepięty w rękę gracza znikają z listy same — silnik odróżnia „ten sam obiekt wciąż tu jest" od „to już inne wcielenie tego samego identyfikatora". Bez tego lista trzymałaby duchy, których fizycznie w strefie nie ma.

Deterministycznie

Lista zachowuje kolejność wchodzenia, jest czysto runtime'owa (nie zaśmieca zapisanej sceny) i nie zależy od sprzętu — ta sama gra daje tę samą odpowiedź wszędzie.

Co dalej

W kolejce: zapytania obszarem doraźnym (bez stałej strefy — „co jest w tym prostokącie w tej chwili") oraz filtrowanie po warstwach kolizji.

📚 Related posts

27.08.2026 20:55

Data, której nie cofniemy nawet my

Każdy certyfikat autorstwa dostaje datę zapisaną w blockchainie Bitcoina — takiej nie podważy nikt, my też nie. Sprawdzisz ją bez konta i bez Moonligh...
Continue reading →
27.08.2026 19:35

Twój kolor, wszędzie

Trzy tryby i siedem akcentów, wspólnych dla strony i Moonlight Animate. Motyw jedzie z kontem, profil pokazuje gościom Twoje kolory, a harmonogram sam...
Continue reading →
27.08.2026 18:31

Kto moderuje i na jakiej podstawie

Moderator to teraz osobna rola z własnym zakresem, a nie administrator w przebraniu. Odrzucenie treści wymaga powodu, który trafia do autora razem z d...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.