From a276339f79282cbfbee1c19514b0b71c18c36d6a Mon Sep 17 00:00:00 2001 From: AlexCube Date: Tue, 13 Oct 2026 18:01:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=B2=D0=B5=D1=80=D0=B8=20=D0=BE=D0=B4?= =?UTF-8?q?=D0=B5=D1=80=D0=B6=D0=B8=D0=BC=D0=BE=D0=B3=D0=BE:=20=D0=BB?= =?UTF-8?q?=D1=83=D1=87=20Voxel.Raycast=20=D0=B2=20=D0=BC=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BA=D0=BE=D0=BE=D1=80=D0=B4=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=D1=82=D0=B0=D1=85=20(+Origin.position),=20=D0=BA?= =?UTF-8?q?=D0=B0=D0=BA=20GetLookRay=20=D0=BF=D0=B5=D1=80=D1=81=D0=BE?= =?UTF-8?q?=D0=BD=D0=B0=D0=B6=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- HarmonySrc/Possession.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/HarmonySrc/Possession.cs b/HarmonySrc/Possession.cs index c87cee3..0ddd3b7 100644 --- a/HarmonySrc/Possession.cs +++ b/HarmonySrc/Possession.cs @@ -2171,9 +2171,12 @@ namespace NecromancerTome // Блок под прицелом - лучом по сетке блоков, как ищет персонаж (PlayerMoveController: Voxel.Raycast, те же // маски). Физический луч дверь не видел (тест 13.10: «двери не открываются, даже подсказки нет») - коллайдеры // дверей не на тех слоях. Луч - с уровня головы зомби по взгляду: от третьего лица камера за спиной. + // Луч - в МИРОВЫХ координатах, как GetLookRay у персонажа (тест 13.10: в координатах сцены - «блока нет» на + // каждое E: они сдвинуты на Origin.position). Vector3 fwd = cam.forward; - Vector3 head = _z.getHeadPosition() - Origin.position; - Vector3 from = cam.position + fwd * Mathf.Max(0f, Vector3.Dot(head - cam.position, fwd)); + Vector3 camW = cam.position + Origin.position; + Vector3 head = _z.getHeadPosition(); + Vector3 from = camW + fwd * Mathf.Max(0f, Vector3.Dot(head - camW, fwd)); if (!Voxel.Raycast(_world, new Ray(from, fwd), UseReach, -555266077, 69, 0f)) { Debug.Log("[NecromancerTome] Possession: E - под прицелом в " + UseReach + " м блока нет");