No tienes acceso a esta clase

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

Programando nuestro script de mira

12/20
Recursos

¿Cómo programar la mira de tu personaje en Unity?

Programar el comportamiento de la mira de un personaje en videojuegos es una tarea esencial para lograr una experiencia inmersiva y fluida. El manejo adecuado de sensibilidad y rotación para los movimientos puede marcar la diferencia entre un juego bien ejecutado y uno sin pulir. En esta guía, desglosaremos paso a paso cómo ajustar estos aspectos en Unity para crear un funcionamiento adecuado en tu personaje.

¿Qué variables necesitas declarar en Unity?

Para comenzar, es indispensable declarar ciertas variables en tu script que facilitarán el manejo de la sensibilidad y rotaciones. Inicialmente, se requiere definir una variable flotante para la sensibilidad de movimiento de la mira:

public float sensitivity = 100f;

Esta variable determina con qué rapidez o lentitud la mira responde a los movimientos del mouse o joystick. La sensibilidad debe ajustarse a las preferencias del jugador, ya que algunos prefieren una mayor sensibilidad para movimientos más rápidos, mientras que otros optan por menos para tener más precisión y control.

Además, requerimos declarar un Transform para nuestra posición:

public Transform player;

Y una variable para la rotación en el eje x:

private float xRotation = 0f;

Estas variables iniciales configurarán el juego para responder adecuadamente a la entrada del jugador desde el comienzo.

¿Cómo implementar las funciones de update?

La función Update, es indispensable para manejar la lógica que se repetirá cada frame. Te guiaré en los pasos necesarios para manejar esta lógica:

  1. Capturar el movimiento del mouse: Unity ofrece una función llamada Input.GetAxis que facilita obtener la dirección del movimiento en ambos ejes del mouse:

    float mouseX = Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime;
    float mouseY = Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;
    
  2. Actualizar la rotación: Usa el valor del mouse para ajustar la rotación en el eje x y limitar el ángulo de visión vertical. Esto se realiza utilizando la función Mathf.Clamp:

    xRotation -= mouseY;
    xRotation = Mathf.Clamp(xRotation, -75f, 75f);
    
  3. Aplicar la rotación al player: Se debe configurar el Transform del player para rotar usando Quaternion:

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

Esta configuración permite que el personaje no solo gire la cabeza para mirar hacia arriba y abajo, sino también de lado a lado eficientemente.

¿Cómo bloquear el cursor en Unity?

Un paso crucial al programar la cámara es asegurarse de que el cursor del mouse no interfiera con el juego bloqueándolo en el centro de la ventana del juego:

Cursor.lockState = CursorLockMode.Locked;

Este ajuste evita que el cursor pueda salir de la ventana del juego y que los movimientos de la cámara sean precisos y centrados.

Al seguir estos pasos, tendrás un script funcional que permite una experiencia de juego fluida y receptiva con respecto a los movimientos de la cámara y el personaje. Continúa explorando más conceptos en Unity para mejorar aún más tu proyecto. ¡El mundo del desarrollo de videojuegos es vasto y lleno de oportunidades para aprender!

Aportes 14

Preguntas 9

Ordenar por:

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

No entendi nada jajaja. Existe un curso de scripts ?

no me aparecen highlights en el codigo

Para el que no entendió el código.

Para aquellos que no quieren pagar o descargar la prueba de Visual Studio, pueden descargar VS Code totalmente gratis y no llega ni a los 100 megas de peso, y dotNet como compilador.

Linea x linea el mismo codigo de Brackeys en Youtube :rofl

Si no les sale el menu de atajos cuando estan codeando en visual studio cosas del unity, lo que tienen que hacer es ir al editor de unity, en edit, buscar el menu de preferences y ahi en external tools, escoger el visual studio como editor

Aquí explican un poco mejor la función del deltaTime, por si a alguien le interesa. Es algo que se usa mucho y es importante saber por qué:).
https://www.youtube.com/watch?v=Gcoj3llfzSw&t=83s

Tengo un problema y cunado coloco el código no me sirve el asistente alguien me podria ayudar porfavor

![](

puedes usar ctrl+K y luego ctrl+D para indentar parte de tu codigo automaticamente

Estoy encantado con mis primeras líneas de C#

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);
    }
}

holaaa!! para los que cuando escriban el codigo por ejemplo el “Transform” y les salga en blanco como texto nromal, es decir, VS code no lo esta reconociendo, asi como me paso a mi, solo deben de colocar el visual studio code como editor predetermido en : EDDIT + PREFFERENCES + EXTERNAL TOOLS y le pinchan donde dice external scrip editor y lo cambian a su version de VS code y listo 😄

No me gusta quejarme pero que clase tan mala… Las explicaciones son totalmente insuficientes. Despues de haber pasado clases completas de temas casi irrelevantes ahora mete un monton de conceptos sin ninguna claridad ni orden… Es terrible que uno tenga que ir a google a buscar aclaraciones cuando se supone que este contenido pagado tiene que ser mejor que el contenido gratuito que se encuentra en internet.

Genial

yo si entemdy