diff --git a/Assets/Scripts/Interaction/PingClickHandler.cs b/Assets/Scripts/Interaction/PingClickHandler.cs index 9c1eb32..cd1545e 100644 --- a/Assets/Scripts/Interaction/PingClickHandler.cs +++ b/Assets/Scripts/Interaction/PingClickHandler.cs @@ -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(); _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() diff --git a/Assets/Scripts/Interaction/TouchPositionHandler.cs b/Assets/Scripts/Interaction/TouchPositionHandler.cs index 2ce938c..9183d21 100644 --- a/Assets/Scripts/Interaction/TouchPositionHandler.cs +++ b/Assets/Scripts/Interaction/TouchPositionHandler.cs @@ -22,7 +22,18 @@ public class TouchPositionHandler : MonoBehaviour private void OnEnable() { _meshRenderer = GetComponent(); - if (_meshRenderer != null) _meshRenderer.enabled = true; + if (_meshRenderer != null) + { + _meshRenderer.enabled = true; + // 只显示描边,填充透明 + var mat = _meshRenderer.material; + if (mat != null && mat.HasProperty("_MainColor")) + { + var c = mat.GetColor("_MainColor"); + c.a = 0f; + mat.SetColor("_MainColor", c); + } + } StopAllCoroutines(); StartCoroutine(BlinkMesh()); }