Пример #1
0
        public override void Apply()
        {
            var f =
                Mathf.SmoothStep(0, 1, DurationCurrent / Duration);

            //var f = (float)_step / _steps;

            ValueCurrent =
                MatrixUtilities.CreateRotationMatrix(Quaternion.Slerp(startRotation, endRotation, f))
                * MatrixUtilities.CreateTranslationMatrix(Vector3.Lerp(startTranstion, endTranslation, f));

            transform.SetPosition(ValueCurrent.GetPosition(), SetGlobal);
            transform.SetRotation(ValueCurrent.GetRotation(), SetGlobal);
        }
Пример #2
0
        public override void Apply()
        {
            //Notifier.AddMessage(StepCountTotal.ToString());
            var f = Mathf.SmoothStep(0, 1, DurationCurrent / Duration);
            //var f = (float)_step / _steps;
            var l = Mathf.Lerp(beginLength, endLength, f);

            var d = Vector3.Lerp(valueBegin.GetPosition(), valueEnd.GetPosition(), f);

            d.Normalize();
            d *= l;

            ValueCurrent =
                MatrixUtilities.CreateRotationMatrix(Quaternion.Slerp(ValueOriginal.GetRotation(), ValueTarget.GetRotation(), f))
                * MatrixUtilities.CreateTranslationMatrix(d);

            transform.position = d;
            transform.rotation = Quaternion.Slerp(ValueOriginal.GetRotation(), ValueTarget.GetRotation(), f);
        }