public static Vector3 Lerp(float t, params Vector3[] vectors) { if (vectors.Length == 1) { return(vectors[0]); } else if (vectors.Length > 1) { int keysNum = vectors.Length; float delta = 1f / (keysNum - 1); int piece = t == 1 ? keysNum - 2 : Mathf.FloorToInt(t / delta); float r = MathfExtend.Percent(t - (delta * piece), delta); return(Vector3.Lerp(vectors[piece], vectors[piece + 1], r)); } else { return(Vector3.zero); } }
public void GetScale(Transform tr, float position) { if (tr == null) { return; } float percent = MathfExtend.Percent(position, positionForMinScale, positionForMaxScale); float newScale = Mathf.Lerp(addedScaleRange.x, addedScaleRange.y, percent); if (_originsScales != null && !_originsScales.ContainsKey(tr)) { _originsScales.Add(tr, tr.localScale); if (tr.TryGetComponent <PearlObject>(out var obj)) { obj.DisactiveHandler += OnDisableLayer; } } Vector3 oiginScale = _originsScales[tr]; tr.localScale = new Vector3(oiginScale.x + newScale, oiginScale.y + newScale, oiginScale.z + newScale); }