From f56e9417c90959a97f1969920463dd0f1e4623aa Mon Sep 17 00:00:00 2001 From: min Date: Tue, 9 Jun 2026 13:20:51 +0300 Subject: [PATCH] =?UTF-8?q?fix(lua):=20player.=5Fpos=20=D0=B2=D0=BC=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=BE=20body.position?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit player.body.position не существует — позиция в PlayerController._pos. Из-за этого realPos оставался null, api._realPlayerPos не обновлялся, конфетти вылетали из начальной hrp._position (0, 5, 0). --- src/editor/engine/GameRuntime.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/editor/engine/GameRuntime.js b/src/editor/engine/GameRuntime.js index 3fd2fe2..bddaa0f 100644 --- a/src/editor/engine/GameRuntime.js +++ b/src/editor/engine/GameRuntime.js @@ -957,11 +957,12 @@ export class GameRuntime { } const state = this._collectState(); // Реальная позиция игрока для Lua __rbxl_player_pos() + // PlayerController хранит позицию в player._pos (Vector3). const player = this.scene3d?.player; let realPos = null; - if (player?.body?.position) { - const p = player.body.position; - realPos = { x: p.x, y: p.y, z: p.z }; + if (player?._pos) { + const halfH = player.HALF_H ?? 0.9; + realPos = { x: player._pos.x, y: player._pos.y - halfH, z: player._pos.z }; } else if (state?.player) { realPos = { x: state.player.x, y: state.player.y, z: state.player.z }; }