No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
4 Hrs
34 Min
13 Seg

Revisión del código y bugfixing

13/20
Recursos

¿Cómo calibramos los controles del mouse en Unity?

La calibración y gestión adecuada del mouse en Unity son elementos esenciales para garantizar una experiencia de usuario fluida y personalizada. A través del código en Unity, podemos ajustar cómo se reciben y procesan los movimientos del mouse. Esto es particularmente útil cuando se desarrollan juegos o aplicaciones inmersivas en 3D. Empezamos configurando la sensibilidad del mouse, que puede ser ajustada al gusto del jugador gracias a la creación de interfaces de usuario (UI), posibilitando una experiencia adaptada y personalizada.

¿Qué papel juega el componente 'transform' en Unity?

El juego de transformaciones es vital en el desarrollo de videojuegos, especialmente en Unity, ayudando a manejar los movimientos y rotaciones de los objetos en 3D. El componente transform es una poderosa herramienta que nos permite manipular la posición, rotación y escala de los objetos dentro del espacio tridimensional del juego. Es fundamental para mover o rotar la cámara y para desplazar a los personajes, haciendo que todo se sienta natural y responda correctamente a las interacciones del jugador.

Transform playerTransform;
float mouseX = Input.GetAxis("Mouse X");
playerTransform.Rotate(Vector3.up * mouseX * Time.deltaTime);

En el ejemplo anterior, utilizamos Input.GetAxis para obtener la posición del mouse y su transformación en el eje 'X', lo que posteriormente permite rotar al personaje o cámara.

¿Cómo funciona Input.GetAxis en Unity?

Unity facilita el manejo de entradas de usuario a través de la función Input.GetAxis, que nos entrega un valor que representa el movimiento en un eje específico, sin tener que implementar manualmente cálculos sobre el desplazamiento del mouse. Esto es extremadamente valioso porque Unity se encarga del cálculo del desplazamiento del mouse, ahorrándonos la necesidad de crear funciones personalizadas para identificar la posición del mouse y cuánto se ha movido.

¿Qué es el clamping y cómo se aplica en las rotaciones?

El clamping es una técnica utilizada para limitar los valores de una variable dentro de un rango específico. En el contexto de rotaciones en Unity, es útil para evitar que la cámara gire demasiado y rompa la ilusión de realidad visual del entorno. Específicamente, en nuestro ejemplo, ajustamos la rotación de la cámara para asegurarnos de que se mantenga dentro de un rango adecuado, como de -90 a 75 grados.

¿Cómo se enlaza un 'script' al 'player' en Unity?

Para permitir que el script funcione correctamente, es necesario arrastrarlo al objeto deseado en el entorno Unity. Primero, aseguramos que nuestra cámara está adeudamente ubicada dentro del objeto 'player'. Luego, arrastramos el script hacia nuestro 'player', confirmando que el componente transform requerido esté vinculado.

Tip: Uso del candado en el inspector

Para facilitar la gestión de elementos en Unity y prevenir cambios no deseados mientras navegamos por el inspector, podemos utilizar el ícono de candado. Esto permite bloquear el inspector en el elemento actual sin alterar las configuraciones actuales mientras cambiamos entre distintos objetos del ambiente.

¿Cómo solucionamos un error de rotación en el eje Y?

Encontrar y solucionar errores de lógica en el código es fundamental. Uno de los errores comunes es la incorrecta aplicación de operaciones aritméticas al calcular las rotaciones. En este caso, detectamos un error en la función que calcula el desplazamiento de la cámara en el eje Y debido a una operación incorrecta. Tras corregir la ecuación, probamos el comportamiento en Unity y verificamos que ahora la rotación lateral sea correcta y fluida.

// Error corregido
rotationY -= mouseY * sensitivity;
rotationY = Mathf.Clamp(rotationY, -90f, 75f);

Con estas correcciones, la experiencia visual del juego se mejora, y el jugador puede explorar su entorno debidamente sin sufrir problemas visuales o de control.

¿Qué sigue después de configurar la cámara y el mouse?

El siguiente paso lógico en el desarrollo del juego es programar el movimiento básico del personaje: adelante, atrás, izquierda y derecha. Este movimiento crea la base del movimiento del personaje en cualquier entorno de juego. Posteriormente, se avanzará a programar elementos interactivos como disparos y enemigos, integrando aún más elementos que harán el juego dinámico y emocionante para el jugador.

Con todo lo que hemos abordado, es evidente que ya estás en el camino correcto al explorar el mundo de la programación en Unity. ¡Sigue adelante con curiosidad y entusiasmo, y observa cómo tus ideas cobran vida en el mundo virtual!

Aportes 23

Preguntas 12

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Cuando en la clase pasada vimos el

=-

Un consejo para encontrar y solucionar errores más fácilmente:
Tenia este error Assets\Scripts\Mira.cs(26,62): error CS1003: Syntax error, ‘,’ expected.
Para encontrar el fallo simplemente hay que fijarse en los números dentro del paréntesis (26,62).
El primer número indica la línea donde se encuentra el error, que en este caso es la línea 26.
El segundo número muestra el caracter donde esta el error, que es el caracter 62.
Espero les sirva 😃

Me sucedía que no podía girar a los lados a pesar de tener el código igual y de probar el código que mis compañeros compartían. Estuve probando y me di cuenta que con la misma función de localRotation se puede lograr el mismo resultado, sin embargo hay que crear otra variable de rotación. aquí les dejo el código de como me quedo:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class mira : MonoBehaviour
{
    public float Sensitivity=0.1f;
    public Transform player1;
    float xRotation = 0f;
    float yRotation = 0f;
    // Start is called before the first frame update
    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    // Update is called once per frame
    void Update()
    {
        float mouseY = Input.GetAxis("Mouse Y")*Sensitivity;
        float mouseX = Input.GetAxis("Mouse X")*Sensitivity;

        xRotation -= mouseY;
        yRotation += mouseX;
        xRotation = Mathf.Clamp(xRotation,-90f,75f);
        transform.localRotation = Quaternion.Euler(xRotation,yRotation,0f);

        
        

    }
}

Cuando le damos a play el cursor desaparece debido a la instrucción que le dimos en el script, para que vuelva a aparecer solo presiona la tecla esc

Un aporte pequeño :

Si van a Edit > Project settings > Input manager > Axes pueden ver los inputs que tenemos disponibles , aquie es de donde tomamos “Mouse X” y “Mouse Y”. 😄

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mira : MonoBehaviour
{

    public float Sensitivity = 100f;

    public Transform player1;

    float xRotation = 0f;

    // Start is called before the first frame update
    void Start()
    {
        //
        Cursor.lockState = CursorLockMode.Locked;//bloquea el cursor al centro de la ventana del juego 

    }

    // Update is called once per frame
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * Sensitivity * Time.deltaTime;//
        float mouseY = Input.GetAxis("Mouse Y") * Sensitivity * Time.deltaTime;

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

        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);//Quaternion se ocupa para almacenar rotaciones 
        player1.Rotate(Vector3.up * mouseX);



    }
}```

Corregí todo, puedo mover la cámara pero solo para arriba y para abajo (en el eje X) 😦 no puedo ir a los costados.

Esto cada vez se pone mejor.

Muy buen repaso y corrección de Bug. A Ricardo Izquierdo le hubiera gustado mucho esta clase.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mouse : MonoBehaviour
{
    public float Sensitivity = 100f;

    public Transform player1;

    float xRotation = 0f;

    // Start is called before the first frame update
    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    // Update is called once per frame
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * Sensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * Sensitivity * Time.deltaTime;

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

        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        player1.Rotate(Vector3.up * mouseX);
    }
}
esto m esta volviendo loco de felicidad

Para colocar comentarios solo debes añadir // doble barra al inicio de la linea.

//Input.GetAxis("Mouse X") devuelve valores entre 1 y -1 dependiendo de
        //la direccion a la que se mueva el mouse
        float mouseX = Input.GetAxis("Mouse X") * sensibilidad * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * sensibilidad * Time.deltaTime;

        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation,-80,75);

        //Para rotar la camara
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        //Para rotar el personaje
        player_1.Rotate(Vector3.up * mouseX);

Porfavor ayuda, alguien sabe que hacer en este caso, ya seguí todo y no entiendo porque falla lo estoy haciendo desde VS tal como dice el profesor.

Me sale este error :c

Aquí está lo que hice

me gustaria que no me fuera a 1 FPS jajaj

ayuda me sale eso:(

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mira : MonoBehaviour
{
public float Sensitivity = 100f;

public Transform player1;
    
float xRotation = 0f;




// Start is called before the first frame update
void Start()
{
    // bloquea el cursor al centro de la ventana de juego
    Cursor.lockState = CursorLockMode.Locked;

}

// Update is called once per frame
void Update()
{
    // obtener el eje x del mouse
    float mouseX = Input.GetAxis("Mouse X") * Sensitivity * Time.deltaTime;
    float mouseY = Input.GetAxis("Mouse Y") * Sensitivity * Time.deltaTime;

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

    Transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
    player1.Rotate(Vector3.up * mouseX);


}

}

Excelente Clase! Ya que todo funciona tratare de asimilar el codigo XD

![](
Alguien me puede decir como solucionar esos errores por favor

no se si es por la version de unity pero segun unity “TIME” does not contain a definition for “deltatime”

Excelente clase!.

Me sale como error esto en unity “The left-hand side of an assignment must be a variable, property or indexer” qué estoy haciendo mal??

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mira : MonoBehaviour
{
        public float Sensitivity = 100f; 

        public Transform player1;

        float xRotation = 0f;

    // Start is called before the first frame update
    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    // Update is called once per frame
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") = Sensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") = Sensitivity * Time.deltaTime;

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

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


    }
}

No me funciona! 😦 lo edito y guardo pero cuando agrego el script solo me aparece esto!