Files
Main/Assets/Launcher/ExternalLibs/Others/TrailRenderScaleScript.cs

64 lines
1.6 KiB
C#
Raw Permalink Normal View History

2025-01-25 04:38:09 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(TrailRenderer))]
public class TrailRenderScaleScript : MonoBehaviour
{
private TrailRenderer _render;
[Range(0,1)]
public float _scale = 1;
public float _oldWidthMultiplier = 1;
public float _oldStartWidth = 1;
public float _oldEndWidth = 0;
public float _oldDis = 1;
private void OnEnable()
{
_render = GetComponent<TrailRenderer>();
_oldStartWidth = _render.startWidth;
_oldEndWidth = _render.endWidth;
_oldWidthMultiplier = _render.widthMultiplier;
_oldDis = _render.minVertexDistance;
var vs = transform.lossyScale;
_scale = Mathf.Max(vs.x, vs.y, vs.z);
TrailChanged(_scale);
}
private void OnDisable()
{
TrailChanged(1);
}
private void OnDestroy()
{
TrailChanged(1);
}
private void Update()
{
if (Time.frameCount % 10 == 0)
{
var vs = transform.lossyScale;
var s = Mathf.Max(vs.x, vs.y, vs.z);
if (Mathf.Abs(s - _scale) > 0.001)
{
_scale = s;
TrailChanged(_scale);
}
}
}
private void TrailChanged(float scale)
{
if (_render != null)
{
_render.widthMultiplier = _oldWidthMultiplier * scale;
_render.startWidth = _oldStartWidth * scale;
_render.endWidth = _oldEndWidth * scale;
_render.minVertexDistance = _oldDis * scale;
}
}
}