fix: touchArray描边去实心填充+ping矩形描边基于模型Bounds
- TouchPositionHandler.OnEnable: 设_MainColor.a=0只留描边 - PingClickHandler.CreateBlueOutline: 根据模型meshRenderer.bounds画矩形环 - 去掉圆环硬编码
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user