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(); _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; } } }