Плохо работающая инерция, через библиотеку LeanTween
Не могу настроить инерцию камере после свайпа происходит инерция и камера движется в ту сторону, после скорость падает. Ссылка на то что имею https://youtu.be/2LFCESORY6s. также скрипт в описании
public Transform target;
public Vector3 offset;
public float sensitivity = 3; // чувствительность мышки
public float limit = 80; // ограничение вращения по Y
public float zoom = 0.25f; // чувствительность при увеличении, колесиком мышки
public float zoomMax = 10; // макс. увеличение
public float zoomMin = 3; // мин. увеличение
private float X, Y;
public Vector3 LastPos;
public Vector3 TestPos;
void Start()
{
limit = Mathf.Abs(limit);
if (limit > 90) limit = 90;
offset = new Vector3(offset.x, offset.y, -Mathf.Abs(zoomMax) / 2);
Camera.main.transform.position = Camera.main.transform.localRotation * offset + target.position;
}
public void OnDrag(PointerEventData eventData)
{
X = Camera.main.transform.localEulerAngles.y + eventData.delta.x * sensitivity;
Y += eventData.delta.y * sensitivity;
Y = Mathf.Clamp(Y, -limit, limit);
Camera.main.transform.localEulerAngles = new Vector3(-Y, X, 0);
//GetComponent<Rigidbody>().velocity = Camera.main.transform.localRotation * offset + target.position;
Camera.main.transform.position = Camera.main.transform.localRotation * offset + target.position;
//LeanTween.rotate(Camera.main.gameObject, (new Vector3(-Y, X, 0)), 0.0000000001f);
//LeanTween.move(Camera.main.gameObject, (Camera.main.transform.rotation * offset + target.position), 0.0000000001f);
}
public void OnEndDrag(PointerEventData eventData)
{
X = Camera.main.transform.localEulerAngles.y + eventData.delta.x * sensitivity;
Y += eventData.delta.y * sensitivity;
Y = Mathf.Clamp(Y, -limit, limit);
LeanTween.rotate(Camera.main.gameObject, new Vector3(-Y, X, 0), 1.00000001f);
}
}