I’m using smoothdamp in a scene. When i changed scene and return back to scene that i use smoothdamp, velocity returns NaN. How can i solve this problem?
My script:
void Update()
{
if (transform.position.z == 0)
{
if (Input.GetMouseButtonDown(0))
{
firstPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
x1 = firstPosition;
}
if (Input.GetMouseButton(0))
{
mouseButtonUp = false;
secondPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
transform.localPosition += new Vector3(secondPosition - firstPosition, transform.localPosition.y, transform.localPosition.z);
if (transform.localPosition.x > leftLimit.position.x)
{
transform.localPosition = leftLimit.position;
}
else if (transform.localPosition.x < rightLimit.position.x)
{
transform.localPosition = rightLimit.position;
}
firstPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
}
if (Input.GetMouseButtonUp(0))
{
x2 = Camera.main.ScreenToWorldPoint(Input.mousePosition).x;
distance = x1 - x2;
mouseButtonUp = true;
}
if (mouseButtonUp)
{
if (distance > 5.5f)
{
float xPosition = Mathf.SmoothDamp(transform.localPosition.x, rightLimit.position.x, ref xVelocity, smoothTime);
transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);
if (Mathf.Abs(transform.localPosition.x - rightLimit.position.x) < 0.1f)
{
mouseButtonUp = false;
}
}
else if (distance < 5.5f distance >= 0 transform.localPosition.x >= 0)
{
float xPosition = Mathf.SmoothDamp(transform.localPosition.x, leftLimit.position.x, ref x1Velocity, smoothTime2);
transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);
if (Mathf.Abs(transform.localPosition.x - leftLimit.position.x) < 0.1f)
{
mouseButtonUp = false;
}
}
else if (distance < -5.5f)
{
float xPosition = Mathf.SmoothDamp(transform.localPosition.x, leftLimit.position.x, ref x2Velocity, smoothTime3);
transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);
if (Mathf.Abs(transform.localPosition.x - leftLimit.position.x) < 0.1f)
{
mouseButtonUp = false;
}
}
else if (distance > -5.5f distance < 0 transform.localPosition.x < 0)
{
float xPosition = Mathf.SmoothDamp(transform.localPosition.x, rightLimit.position.x, ref x3Velocity, smoothTime4);
transform.localPosition = new Vector3(xPosition, transform.localPosition.y, transform.localPosition.z);
if (Mathf.Abs(transform.localPosition.x - rightLimit.position.x) < 0.1f)
{
mouseButtonUp = false;
}
}
x2 = x1;
}
}
}