En este momento estás viendo El control del mouse en primera persona de Unity no funciona correctamente

 – Unity

El control del mouse en primera persona de Unity no funciona correctamente – Unity

El control del mouse en primera persona de Unity no funciona correctamente

– UnityAssets3Free

buenas , me llamo Camilo y para hoy os traigo
esta nueva pregunta

Estoy tratando de hacer una cámara en primera persona por primera vez y tengo un pequeño problema aquí. Tengo 2 objetos, una cápsula y una cámara. La cámara es la hija de la Cápsula. Quiero girar hacia los lados (Y) en la cápsula e inclinar hacia arriba y hacia abajo en la cámara (la «cabeza»). Pero cuando coloco estos scripts, uno en cada objeto, no puedo girar la cámara hacia los lados, solo hacia arriba y hacia abajo, y tengo un movimiento de «sacudida» (como cuando chocas contra una pared). este es mi codigo de capsula

    [SerializeField] private int speed = 10;


void Update()

    gameObject.transform.Translate
        (Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0, Input.GetAxis("Vertical")* speed * Time.deltaTime);
   
    transform.eulerAngles = new Vector3(0, Input.GetAxis("Mouse X"), 0);


Y este es mi código de cámara.

    private float angle;

void Update()


    angle += Input.GetAxis("Mouse Y");

    transform.eulerAngles = new Vector3(Mathf.Clamp(-angle, -90, 90), 0, 0);

1 respuesta 1

Actualmente está configurando la rotación y de la cápsula directamente a
Input.GetAxis("Mouse X")

Pero GetAxis("Mouse X") devolverá un valor de 0 cuando no mueva el mouse y un valor de -1/1 cuando mueva el mouse hacia la izquierda o hacia la derecha.

lo que debes hacer es agregar Input.GetAxis("Mouse X") para la rotación y actual de la cápsula como esta (también debe multiplicarla por time.deltaTime para que sea independiente de la velocidad de fotogramas):
transform.eulerAngles += new Vector3(0, Input.GetAxis("Mouse X") * time.deltaTime, 0)

Además, la rotación de la cámara debe multiplicarse por deltaTime para que sea independiente de la velocidad de fotogramas de los juegos. Solo cambia:
angle += Input.GetAxis("Mouse Y");

por:
angle += Input.GetAxis("Mouse Y") * time.deltaTime;

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,espero que te funcione

Deja una respuesta