У меня это работает, но: если я нахожусь в состоянии наклона в определенную сторону, но нажмите с другой стороны он привязывается к 0, а затем движется дальше, наклоняясь к другой стороне.
Я могу себе представить, используя какой-нибудь Quaternion.Lerp или какой-нибудь Mathf. для сглаживания вращения, но я не знаю как.
Вот код:
Код: Выделить всё
private void HandleMouseLook()
{
mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * 5 * Time.deltaTime;
mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * 5 * Time.deltaTime;
Vector2 targetMouseDelta = new Vector2(mouseX, mouseY);
float tilt = -Input.GetAxis("Horizontal") * tiltAmount; // TILTING
// SMOOTHING AND ACCELERATION
if (mouseSmoothing == true)
{
Vector3 v = transform.rotation.eulerAngles;
currentMouseDelta = Vector2.SmoothDamp(currentMouseDelta, targetMouseDelta, ref currentMouseDeltaVelocity, smoothTime, acceleration);
rotationX -= currentMouseDelta.y; // OBEN UND UNTEN ROTATION
rotationX = Mathf.Clamp(rotationX, -upperLookLimit, lowerLookLimit);
playerCamera.transform.localRotation = Quaternion.Euler(rotationX, 0f, tilt);
transform.rotation *= Quaternion.Euler(0f, currentMouseDelta.x, v.z); // LINKS UND RECHTS ROTATION
Debug.Log(tilt);
}
Это означает, что камера наклоняется только на максимум. -0,7 по z или +0,7 по z.
Если я не равен 0 по оси Z и наклоняюсь в противоположном направлении, он привязывается к 0.
Как мне добиться плавного перехода между этим?< /п>
Подробнее здесь: https://stackoverflow.com/questions/786 ... l-snapping
Мобильная версия