From 2af9b960887154643bf0dd77e2073a9b516d1690 Mon Sep 17 00:00:00 2001 From: min Date: Tue, 9 Jun 2026 17:41:20 +0300 Subject: [PATCH] =?UTF-8?q?fix(g7):=20=D1=81=D0=BF=D0=B0=D0=B2=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B5=20unanchored=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D0=B8=D0=B2=D1=8B=20=D1=80=D0=B5=D0=B3=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B8=D1=80=D1=83=D1=8E=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B8=D0=B7=D0=B8=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DynamicsManager.start() собирает unanchored объекты только при входе в Play. Куб созданный из скрипта в runtime не попадал в bodies → не падал, висел в воздухе. Фикс: после pm.addInstance с anchored=false вызываем dm.registerPrimitive(data) — кладёт тело в физический мир сразу после спавна. --- src/editor/engine/rbxl-lua-integration.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/editor/engine/rbxl-lua-integration.js b/src/editor/engine/rbxl-lua-integration.js index cbef7f7..224cfc9 100644 --- a/src/editor/engine/rbxl-lua-integration.js +++ b/src/editor/engine/rbxl-lua-integration.js @@ -150,6 +150,16 @@ export function handleLuaCommand(_scriptId, cmd, payload, runtime) { canCollide: payload?.canCollide !== false, }; pm.addInstance(payload?.type || 'cube', opts); + // Если unanchored — регистрируем в физике на лету, иначе он не падает. + if (opts.anchored === false) { + try { + const dm = runtime.scene3d?.dynamicsManager; + const data = pm.instances?.get?.(opts.id); + if (dm && data) dm.registerPrimitive(data); + } catch (e) { + console.warn('[sceneCreate] registerPrimitive failed', e); + } + } } catch (e) { console.error('[sceneCreate]', e); }