Files
MinFt/Client/Assets/Scripts/UIExtend/ScreenSpaceTrail.cs
2026-04-27 12:07:32 +08:00

41 lines
1.0 KiB
C#

using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(RectTransform), typeof(TrailRenderer))]
public class ScreenSpaceTrail : MonoBehaviour
{
private RectTransform rectTransform;
private TrailRenderer trail;
private Camera uiCamera;
void Start()
{
rectTransform = GetComponent<RectTransform>();
trail = GetComponent<TrailRenderer>();
uiCamera = GetComponentInParent<Canvas>().worldCamera;
}
void Update()
{
UpdateTrailPosition();
}
void UpdateTrailPosition()
{
// 将UI坐标转换为世界坐标
Vector3 screenPos = RectTransformUtility.WorldToScreenPoint(
uiCamera,
rectTransform.position);
// 设置Z值在相机近裁剪面稍前方
Vector3 worldPos = uiCamera.ScreenToWorldPoint(
new Vector3(screenPos.x, screenPos.y, uiCamera.nearClipPlane + 0.1f));
transform.position = worldPos;
}
public void ClearTrail()
{
trail.Clear();
}
}