Как добавить Инерцию камере при свайпе Unity
Камера вращается относительно таргета замечательно, но вот хочу добавить инерцию после свайпа, допустим отжал палец и камера немного сдвигалась в этом направлении. Есть варианты с помощью Rigidbody. Но вот с камерой возникли проблемы
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 float DistanceInerCial;
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)
{
if (Input.GetAxis("Mouse ScrollWheel") > 0) offset.z += zoom;
else if (Input.GetAxis("Mouse ScrollWheel") < 0) offset.z -= zoom;
offset.z = Mathf.Clamp(offset.z, -Mathf.Abs(zoomMax), -Mathf.Abs(zoomMin));
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);
Camera.main.transform.position = Camera.main.transform.localRotation * offset + target.position;
DistanceInerCial = Camera.main.transform.localEulerAngles.y + 10;
}
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Самый простой способ - использовать внешние библиотеки вроде LeanTween или аналогов.
Там можно делать и смену позиции и поворота и добавлять к ним Ease разных вариаций:
LeanTween.rotateX(gameObject, 270.0f, 1.5f)
.setEase(LeanTweenType.easeInBack);
Вот по этой табличке можно выбрать наиболее подходящую функцию лично тебе: https://easings.net
просто наведи на любую функцию мышку.