UnityEngine.Mathf.SmoothDamp C# (CSharp) Method

SmoothDamp() public static method

public static SmoothDamp ( float current, float target, float &currentVelocity, float smoothTime, float maxSpeed, float deltaTime ) : float
current float
target float
currentVelocity float
smoothTime float
maxSpeed float
deltaTime float
return float
        public static float SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed, float deltaTime)
        {
            smoothTime = Max(0.0001f, smoothTime);
            var num1 = 2f / smoothTime;
            var num2 = num1 * deltaTime;
            var num3 = (float)(1.0 / (1.0 + num2 + MagicDamp1 * num2 * num2 + MagicDamp2 * num2 * num2 * num2));
            var num4 = current - target;
            var num5 = target;
            var max = maxSpeed * smoothTime;
            var num6 = Clamp(num4, -max, max);
            target = current - num6;
            var num7 = (currentVelocity + num1 * num6) * deltaTime;
            currentVelocity = (currentVelocity - num1 * num7) * num3;
            var num8 = target + (num6 + num7) * num3;
            if (num5 - (double)current > 0.0 == num8 > (double)num5)
            {
                num8 = num5;
                currentVelocity = (num8 - num5) / deltaTime;
            }
            return num8;
        }

Same methods

Mathf::SmoothDamp ( float current, float target, float &currentVelocity, float smoothTime ) : float
Mathf::SmoothDamp ( float current, float target, float &currentVelocity, float smoothTime, float maxSpeed ) : float

Usage Example

コード例 #1
0
        public void Update()
        {
            if (velocity.magnitude <= 0.01f)
            {
                velocity = Vector3.zero;
            }

            transform.position = GetCameraClampedPosition();

            var cameraPosition = GetCameraPosition();

            transform.position =
                RequiredSmoothDamp ?
                new Vector3(
                    Mathf.SmoothDamp(transform.position.x, cameraPosition.x, ref velocity.x, DampTimeX, DampMaxSpeedX),
                    Mathf.SmoothDamp(transform.position.y, cameraPosition.y, ref velocity.y, DampTimeY, DampMaxSpeedY),
                    cameraPosition.z
                    ) :
                cameraPosition;

            RequiredSmoothDamp = true;
        }
All Usage Examples Of UnityEngine.Mathf::SmoothDamp