Тряска объектов, Character Controller Unity

Я многократно пытался решить ету проблему, но каждый раз что-то идет не так. В итоге я пришел к Character Controller, но опять все трясется.

Вот как выглядит сцена: введите сюда описание изображения

Вот скрипт отслеживания свайпов:

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UIElements;

public class TouchesInput : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    public Vector2 TouchDist;
    public Vector2 PointerOld;
    int PointerId;
    public bool Pressed;

    public void GetTouchDist()
    {
            if (PointerId >= 0 && PointerId < Input.touches.Length)
            {
                TouchDist = Input.touches[PointerId].position - PointerOld;
                PointerOld = Input.touches[PointerId].position;
            }
            else
            {
                TouchDist = new Vector2(Input.mousePosition.x, Input.mousePosition.y) - PointerOld;
                PointerOld = Input.mousePosition;
            }
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        Pressed = true;
        PointerId = eventData.pointerId;
        PointerOld = eventData.position;
    }


    public void OnPointerUp(PointerEventData eventData)
    {
        Pressed = false;
    }

}

Вот скрипт камеры:

using UnityEngine;

public class CameraController : MonoBehaviour
{
    public float sens;
    public Transform player;
    public TouchesInput touches;
    public float Xrot, Yrot, XRotate;

    public void LateUpdate()
    {
        if (touches.Pressed)
        {
            touches.GetTouchDist();

            Xrot = touches.TouchDist.x * sens;

            player.Rotate(Vector3.up * Xrot * Time.deltaTime);
        }
        else
        {
            touches.TouchDist = new Vector2();
        }
    }
}

И вот скрипт для перемещения:

using UnityEngine;

public class Movement : MonoBehaviour
{
    public CharacterController characterController;
    public float movementSpeed;
    public FloatingJoystick joystick;
    public Vector3 move;

    public void Update()
    {
        float X = joystick.Horizontal;
        float Y = joystick.Vertical;

        move = transform.right * X + transform.right * 0 + transform.forward * Y;

        characterController.Move(move * movementSpeed * Time.deltaTime);
    }
}

Ну естественно пока игрок только двигается или только поворачивает камеру то ничего не трясется, но стоит начать делать это одновременно, так все объекты вокруг начинают немного трястись. При чем я не понимаю почему это происходит, если я вращаю камеру как положено в LateUpdate и двигаю персонажа в Update


Ответы (0 шт):