@DuckUb

Как исправить подергивание камеры и поворот игрока во время движения?

Есть код персонажа:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    [Header("Player movement")]
    public float speed;
    public float jumpForce;
    private CharacterController characterController;
    private Vector3 velocity;

    [Header("Camera")]
    public float sensitivity;
    public GameObject playerCamera;
    private float rotationX = 0f;

    private void Start()
    {
        characterController = GetComponent<CharacterController>();
        Cursor.lockState = CursorLockMode.Locked;
    }

    private void Update()
    {
        // Camera rotation 
        float mouseX = Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;

        rotationX -= mouseY;
        rotationX = Mathf.Clamp(rotationX, -90f, 90f);

        playerCamera.transform.localRotation = Quaternion.Euler(rotationX, 0f, 0f);
        transform.Rotate(Vector3.up * mouseX);

        // Character movement 
        float xMove = Input.GetAxis("Horizontal");
        float zMove = Input.GetAxis("Vertical");
        Vector3 move = transform.right * xMove + transform.forward * zMove;

        characterController.Move(move * speed * Time.deltaTime);

        // Jumping 
        if (Input.GetButtonDown("Jump") && characterController.isGrounded)
        {
            velocity.y = Mathf.Sqrt(jumpForce * -2f * Physics.gravity.y);
        }

        // Apply gravity 
        velocity.y += Physics.gravity.y * Time.deltaTime;
        characterController.Move(velocity * Time.deltaTime);
    }
}


66d43f5d4fc89252868014.png

Проблема в том что когда персонаж начинает двигатся в сторону то камера наченает закручиваться, а также при повороте камерой появляются подергивания
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@DrRen7
а зачем тут rb и сс ?)
подергивание можно убрать правильным порядком вызова, поворот камеры надо вызывать в конце (LateUpdate)
из проблем тут вызов СС.Move 2 раза
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы