From 6eaa4545bb51d36549a14451e49247db36ddfc4e Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Sun, 26 Jul 2026 13:04:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(fix-system):=20=E6=89=A9=E5=A4=A7=E7=83=AD?= =?UTF-8?q?=E5=8A=9B=E5=9B=BE=E6=8B=96=E6=8B=BD=E5=91=BD=E4=B8=AD=E8=8C=83?= =?UTF-8?q?=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FixSystem/HeatMap/HeatMapController.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Assets/Scripts/FixSystem/HeatMap/HeatMapController.cs b/Assets/Scripts/FixSystem/HeatMap/HeatMapController.cs index a376eaddd..06d0ce9c2 100644 --- a/Assets/Scripts/FixSystem/HeatMap/HeatMapController.cs +++ b/Assets/Scripts/FixSystem/HeatMap/HeatMapController.cs @@ -20,6 +20,9 @@ public class HeatMapController : MonoBehaviour public RectTransform imageToMove; // 需要移动的Image public Transform imageToRotate; // 需要旋转的Image + [Header("拖拽")] + [Tooltip("在不改变视觉和布局的前提下,向左右/上下扩展拖拽命中范围。")] + [SerializeField] private Vector2 dragHitAreaExpansion = new Vector2(5.2f, 0.3f); [SerializeField, Min(0f)] private float fanStopDuration = 0.15f; [Tooltip("相对 Sprite 矩形中心的额外旋转轴偏移(本地空间,单位与 Transform 一致)。用于校准扇毂不在图心时的偏心。")] [SerializeField] private Vector2 fanPivotLocalOffset; @@ -227,10 +230,31 @@ public class HeatMapController : MonoBehaviour void Start() { bodyModuleSystem = FindObjectOfType(); + ApplyDragHitArea(); EnsureFanPivot(); SetDataToMaterial(); } + private void ApplyDragHitArea() + { + if (heatmapGameobject == null) + return; + + var dragGraphic = heatmapGameobject.GetComponent(); + if (dragGraphic == null) + { + Debug.LogWarning("[HeatMapController] 拖拽对象缺少 Graphic,无法扩展拖拽命中范围。", heatmapGameobject); + return; + } + + float horizontal = Mathf.Max(0f, dragHitAreaExpansion.x); + float vertical = Mathf.Max(0f, dragHitAreaExpansion.y); + + // Graphic 使用负 raycastPadding 扩展命中区;不会改变 RectTransform, + // 因而不会移动右上角按钮或拉伸热力图内容。 + dragGraphic.raycastPadding = new Vector4(-horizontal, -vertical, -horizontal, -vertical); + } + void OnDestroy() { _temptureTween?.Kill();