fix: touchArray描边去实心填充+ping矩形描边基于模型Bounds

- TouchPositionHandler.OnEnable: 设_MainColor.a=0只留描边
- PingClickHandler.CreateBlueOutline: 根据模型meshRenderer.bounds画矩形环
- 去掉圆环硬编码
This commit is contained in:
yangbear
2026-07-03 01:06:54 +08:00
parent 6650540dde
commit d48651678a
2 changed files with 29 additions and 13 deletions
+17 -12
View File
@@ -41,27 +41,32 @@ public class PingClickHandler : MonoBehaviour
if (_outlineRenderer != null) return;
var ringGo = new GameObject("BlueRing");
ringGo.transform.SetParent(transform, false);
ringGo.transform.localPosition = new Vector3(0, 0.05f, 0);
_outlineRenderer = ringGo.AddComponent<LineRenderer>();
_outlineRenderer.useWorldSpace = true;
_outlineRenderer.loop = true;
_outlineRenderer.startWidth = 0.05f;
_outlineRenderer.endWidth = 0.05f;
_outlineRenderer.startWidth = 0.04f;
_outlineRenderer.endWidth = 0.04f;
_outlineRenderer.material = new Material(Shader.Find("Unlit/Color"));
_outlineRenderer.material.color = new Color(0.2f, 0.5f, 1f);
_outlineRenderer.startColor = new Color(0.2f, 0.5f, 1f);
_outlineRenderer.endColor = new Color(0.2f, 0.5f, 1f);
float r = 0.25f;
int segs = 32;
_outlineRenderer.positionCount = segs;
Vector3 center = transform.position + Vector3.up * 0.1f;
for (int i = 0; i < segs; i++)
{
float a = i * 2f * Mathf.PI / segs;
_outlineRenderer.SetPosition(i, center + new Vector3(Mathf.Cos(a) * r, 0, Mathf.Sin(a) * r));
}
// 基于模型 Bounds 画矩形描边
Bounds b;
if (_meshRenderer != null) b = _meshRenderer.bounds;
else b = new Bounds(transform.position, new Vector3(0.3f, 0.01f, 0.3f));
float y = b.center.y + 0.05f;
Vector3 p0 = new Vector3(b.min.x, y, b.min.z);
Vector3 p1 = new Vector3(b.min.x, y, b.max.z);
Vector3 p2 = new Vector3(b.max.x, y, b.max.z);
Vector3 p3 = new Vector3(b.max.x, y, b.min.z);
_outlineRenderer.positionCount = 5;
_outlineRenderer.SetPosition(0, p0);
_outlineRenderer.SetPosition(1, p1);
_outlineRenderer.SetPosition(2, p2);
_outlineRenderer.SetPosition(3, p3);
_outlineRenderer.SetPosition(4, p0);
}
System.Collections.IEnumerator BlinkOutline()