Enrique Rabell Talamantes
No entendi nada jajaja. Existe un curso de scripts ?
Ian Vassallo
Ya viste el curso de programación estructurada?
Ian Vassallo
O tal ves te refieres a la documentación
¿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:
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;
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);
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!
Enrique Rabell Talamantes
No entendi nada jajaja. Existe un curso de scripts ?
Ian Vassallo
Ya viste el curso de programación estructurada?
Ian Vassallo
O tal ves te refieres a la documentación
Rómel García Muñoz
Hola Profesor, tengo una pregunta, quizás estoy haciendo algo mal, ya tengo el Visual Studio, pero por alguna razón creo que no jala la librería de unity, creo que es eso ya que cuando voy poniendo el codigo no me salen las tentativas de código, ni tampoco se marcan con colores.
John Cardenas
Hola houseperu :)
Si no sale lo que indicas, ni los colores, ni autocompletado y demás, lo más probable es que no hayas guardado el archivo. Crea una carpeta para el curso y guarda el archivo en ella con control + S desde VScode. Te debería funcionar.
Rómel García Muñoz
Hola Johncardenasp, si tengo el proyecto guardado,pero nada, pregunta el Visual Studio es el de Microsoft verdad?
Por cierto los Scripts los abro directo de la carpeta de mi proyecto, creo que algo estoy haciendo mal.
Muchas gracias por tu ayuda
Catalina Torchia
Tal vez no sea algo super importante, pero me interesaria saber mas sobre como funciona Quaternion.Euler, entiendo que guarda rotaciones, pero que es una rotacion? xRotation no tenia guardada ya nuestra rotacion? Otras dudas que me quedo del script. transform.localRotation sobre que esta transform esta actuando? el del jugador? el de la camara? player1.rotate entiendo que actua sobre el transform del player1 que declaramos al principio, entonces cual es la diferencia entre transform.localRotation y player1.rotate Y la ultima, Vector3? que seria? y porque tengo que multiplicarlo por mousex?
Gael Treviño Prieto
el .LocalRotation es la rotacion del objeto en relacion a su padre mientras que el .Rotate es la rotacion absoluta del objeto en relacion con el mundo. Si un objeto no tiene padre (es decir, existe en el nivel superior de la jerarquía de la escena) o si su padre no está rotado, la rotación local y la rotación serán iguales.
Puedes checar la documentación de Unity sobre el Quaternion https://docs.unity3d.com/ScriptReference/Quaternion-eulerAngles.html
Igual te recomiendo este video, te ayuda a entender lo que es https://www.youtube.com/watch?v=zjMuIxRvygQ
También este video ya aplicado en Unity https://www.youtube.com/watch?v=B58A1qkEkik
Parte de aprender a crear juegos igual es saber buscar en internet. Google siempre será tu mejor aliado.
Jahiro Bojorquez Uriarte
Para el que no entendió el código.
Miguel Angel Velazquez Romero
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.
Paul
Linea x linea el mismo codigo de Brackeys en Youtube :rofl
Miguel Angel Carrizo Acosta
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
Juan Aguilera Huerta
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
David Santiago Patiño Caceres
Tengo un problema y cunado coloco el código no me sirve el asistente alguien me podria ayudar porfavor
 { 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); } }
Valentina Giraldo Ospina
Holaas, de casualidad alguien me podria recomendar unas buenas extensiones para trabajar en visual con C#, veo que al profe se le completan algunas cosas, pero no se exactamente cuales tiene él, graciasss :)
ivan martin grosso vazques
oigan, esto sale en el curso de C# de la carrera de videojuegos?
Mayra Lopez
Hola, el curso de C# es básico, es casi desde cero, pero es el inicio de esta carrera.
Isabel Cristina Beltrán González
Hola, profesor. Tengo un problema con la mira de mi juego. Hay un error que dice ''Assets/scripts /Mira. Cs(23,23): error CS0103: The name imput doesn't exist in the current context'' y no sé qué hacer. No sé si debo definir '' imput'' o ''imput'' no aparece en la biblioteca del visual studio Code. ¿Qué debería hacer?
Carlos David Zamora Gutiérrez
Hola, la palabra correcta es "Input" en mayúscula y con 'n' en vez de 'm'. Viene de entrada en inglés. Si sigues teniendo problemas puedes compartir el código. Saludos.
Facundo Castro
Hola, porque usa localrotation?
Darien Pablo Chi Chi
Alguien me puede ayudar con este error: "Library\PackageCache\com.unity.textmeshpro@3.0.6\Scripts\Editor\TMP_PackageUtilities.cs(1008,84):error CS0103: The name 'VersionControlSettings' does not exist in the current context".
José Loaiza
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 :D
Mario Arciniegas Mejia
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.
Pablo Andrade
Una pregunta ¿Por qué se establece esta instrucción?
xRotation = -mouseY;