From bfc3821dc72f528d6a3fc5802baaf7d10467af56 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 21 Oct 2026 00:30:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(ignore):=20=E6=81=A2=E5=A4=8D=E9=9D=9E?= =?UTF-8?q?=E4=B8=89=E8=A7=92=E5=BD=A2=E9=9D=99=E6=80=81=E7=A2=B0=E6=92=9E?= =?UTF-8?q?=E7=9A=84=E5=BF=BD=E7=95=A5=EF=BC=8C=E6=A0=85=E6=A0=8F=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E5=8F=AF=E7=A9=BF=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一版把判定收窄为仅陡峭三角形,导致非三角形静态代理(栅栏碰撞体)仍会挡住本地坦克。现判定:静态几何中非三角形一律忽略;三角形按 |法线z|<0.5 忽略,地面/缓坡保留。 --- 3dtank.com/play/static/js/unpacked/hornet_bundle.js | 6 ++++-- 3dtank_bundle.js | 6 ++++-- tools/hornet_noclip.js | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/3dtank.com/play/static/js/unpacked/hornet_bundle.js b/3dtank.com/play/static/js/unpacked/hornet_bundle.js index a90fcf4..54ae4d7 100644 --- a/3dtank.com/play/static/js/unpacked/hornet_bundle.js +++ b/3dtank.com/play/static/js/unpacked/hornet_bundle.js @@ -6672,10 +6672,12 @@ return !IsTankShape(Shape); } - // 「栅栏类」= 静态几何中法线接近水平(墙/栅栏/悬崖立面)的三角形 - // 保持原方案:只按几何判定,不做任何物体白名单 + // 「栅栏类」= 静态几何里除地面/缓坡以外的部分: + // · 三角形:法线接近水平(墙/栅栏/悬崖立面)→ 忽略;法线朝上(地面/缓坡)→ 保留 + // · 非三角形静态碰撞代理(盒/柱等):地图里这类基本都不是可站立地面 → 忽略 function IsFenceLike(Shape) { if (!IsStaticShape(Shape)) return false; + if (!IsTriangle(Shape)) return true; return IsSteepTriangle(Shape); } diff --git a/3dtank_bundle.js b/3dtank_bundle.js index a90fcf4..54ae4d7 100644 --- a/3dtank_bundle.js +++ b/3dtank_bundle.js @@ -6672,10 +6672,12 @@ return !IsTankShape(Shape); } - // 「栅栏类」= 静态几何中法线接近水平(墙/栅栏/悬崖立面)的三角形 - // 保持原方案:只按几何判定,不做任何物体白名单 + // 「栅栏类」= 静态几何里除地面/缓坡以外的部分: + // · 三角形:法线接近水平(墙/栅栏/悬崖立面)→ 忽略;法线朝上(地面/缓坡)→ 保留 + // · 非三角形静态碰撞代理(盒/柱等):地图里这类基本都不是可站立地面 → 忽略 function IsFenceLike(Shape) { if (!IsStaticShape(Shape)) return false; + if (!IsTriangle(Shape)) return true; return IsSteepTriangle(Shape); } diff --git a/tools/hornet_noclip.js b/tools/hornet_noclip.js index 38adb39..529f876 100644 --- a/tools/hornet_noclip.js +++ b/tools/hornet_noclip.js @@ -148,10 +148,12 @@ return !IsTankShape(Shape); } - // 「栅栏类」= 静态几何中法线接近水平(墙/栅栏/悬崖立面)的三角形 - // 保持原方案:只按几何判定,不做任何物体白名单 + // 「栅栏类」= 静态几何里除地面/缓坡以外的部分: + // · 三角形:法线接近水平(墙/栅栏/悬崖立面)→ 忽略;法线朝上(地面/缓坡)→ 保留 + // · 非三角形静态碰撞代理(盒/柱等):地图里这类基本都不是可站立地面 → 忽略 function IsFenceLike(Shape) { if (!IsStaticShape(Shape)) return false; + if (!IsTriangle(Shape)) return true; return IsSteepTriangle(Shape); }