コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }