I’ve been trying to find a solution to creating a camera deceleration when orbiting around a scene. For an application that I am developing for the IOS.
I have a make shift approach that uses the Lerp function but the transition is not smooth enough like some transitions that you see on native IOS application.
The example code is below:
void Update()
{
if (Input.touchCount > 0)
{
if (Input.GetTouch(0).phase == TouchPhase.Moved)// */ Input.GetMouseButton(0))
{
if (target)
{
CamOrbit();
}
}
if (Input.GetTouch(0).phase == TouchPhase.Ended) // */Input.GetMouseButtonUp(0))
{
InputX = Input.GetAxis("Mouse X");
InputY = -Input.GetAxis("Mouse Y");
isMoving = true;
current = 1;
}
}
}
void LateUpdate()
{
if (isMoving)
{
Quaternion rotation;
current += Time.deltaTime;
x += -InputX * xSpeed * 0.02f;
y += -InputY * ySpeed * 0.02f;
rotation = Quaternion.Euler(y, x, 0);
transform.rotation = Quaternion.Lerp(rotation, CamOrbit(), 100f * Time.deltaTime);
if (current > 1.2)
isMoving = false;
}
}
private Quaternion CamOrbit()
{
x += -Input.GetAxis("Mouse X") * xSpeed * 0.02f;
y -= -Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
rotation = Quaternion.Euler(y, x, 0);
transform.rotation = rotation;
return rotation;
}
I tried using Slerp, but the effect was more or less the same, I know I might have used it in an incorrect way, But i do hope someone can shed some light on this.
Thanks, Shanaire.