‹›
Pomocné skripty · Penetrace těles

Vytažení a životní cyklus

Vytažení řiďte silou; odstranění Tipu používejte pro explicitní konec jeho existence.

Aktivní relationship vlastní fyzikální constraint a potlačení kolizí konkrétního páru. Při ukončení obojí uvolní. Nezaměňujte vypnutí admission, vytažení a odstranění: jsou to tři různé operace.

ZáměrOperaceVýsledek
Dočasně nepřijímat nové zásahytip.set_enabled(false)Aktivní penetrace zůstává; po opětovném enable lze přijímat nové.
Fyzikálně vytáhnout nástrojSíla / pohyb proti osePřekonejte backward_force, uvolněte celý collider a nechte proběhnout rearm.
Odstranit hrot z nástrojetip.remove()Ukončí všechna jeho relationships; body zůstává existovat.
Zničit nástroj nebo targetbody.destroy()Ukončí související relationships a zneplatní odpovídající wrappery.
Ukončit celý světjolt_stop()Uklidí subsystem i registry a vyčistí event frontu.

Rearm po vytažení#

Záporná hloubka Tipu sama nestačí. Široký nebo nakloněný penetrator může být dál geometricky překrytý s targetem. Po úplném oddělení a požadovaném rearm_separation se stejný Tip připraví na nový zásah. Další relationship dostane novou identitu; starý rel už nepoužívejte jako aktuální.

Kolizní potlačení je vlastněné#

Systém nevypíná penetratoru kolize s celým světem. Spravuje lease pro konkrétní dvojici a při konci uvolní pouze svůj podíl. Více relationships stejné dvojice proto nesmí po skončení jednoho spojení předčasně obnovit kolize ostatním. Vaše vlastní layer/group pravidla zůstávají v platnosti.

Bezpečný cleanup jednoho nástroje#

GML
if (is_struct(tip) && tip.is_valid()) {
    tip.remove();
}
if (is_struct(penetrator) && penetrator.is_valid()) {
    penetrator.destroy();
}

Při normální extraction zůstává Tip platný. Neodstraňujte a nevytvářejte jej každý frame; zbytečně byste rušili lifecycle, identity a události.