64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|