Двери одержимого: луч Voxel.Raycast в мировых координатах (+Origin.position), как GetLookRay персонажа
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
67c8a622e8
commit
a276339f79
@@ -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 + " м блока нет");
|
||||
|
||||
Reference in New Issue
Block a user