From f1e0f6cb8f4f9943ce831de8be89c29fc4e61ad4 Mon Sep 17 00:00:00 2001 From: NianGao Dev Date: Sat, 15 Aug 2026 22:42:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(raycast):=20=E6=94=BE=E7=BD=AE=E4=BD=8D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=EF=BC=88=E5=91=BD=E4=B8=AD=E6=A0=BC+?= =?UTF-8?q?=E9=9D=A2=E6=B3=95=E7=BA=BF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/raycast/raycast.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/raycast/raycast.go b/internal/raycast/raycast.go index e8b79fee..8a49236b 100644 --- a/internal/raycast/raycast.go +++ b/internal/raycast/raycast.go @@ -48,8 +48,8 @@ func Cast(origin, dir [3]float64, maxDist float64, solid Solid) (Hit, bool) { dist := 0.0 for dist <= maxDist { if solid(x, y, z) { - // 当前格命中:面法线 = 上一步进入方向 - return Hit{X: x, Y: y, Z: z, Face: face, Prev: [3]int32{x - face[0], y - face[1], z - face[2]}, Dist: dist}, true + // 当前格命中:面法线指向射线来向(背离方块),放置位 = 命中格 + 面法线 + return Hit{X: x, Y: y, Z: z, Face: face, Prev: [3]int32{x + face[0], y + face[1], z + face[2]}, Dist: dist}, true } // 选择 tMax 最小的轴步进 switch {