En los comentarios del vídeo de cómo leer entradas de texto en Unity me preguntaron cómo se puede instanciar objetos en Unity al ingresar determinados nombres en un Input Field del Canvas. Para responder a esta pregunta he creado un prototipo en Unity que permite instanciar un GameObject dependiendo del nombre que se escriba en el campo de entrada, si este nombre coincide con algún nombre de una cierta lista, se hace aparecer el objeto vinculado a ese nombre. Aquí encontrarás ese prototipo para descargar junto con dos vídeos explicativos en los que se describe cómo está compuesta la escena del prototipo y se analiza el Script que resuelve el problema. Espero que te resulte útil!
A continuación hay dos vídeos en los que explico el funcionamiento del prototipo para INSTANCIAR GameObjects por nombre en Unity
A continuación puedes descargar el paquete que contiene todos los archivos del prototipo, modelos 3D, animaciones y Scripts.
Introducción
Para el problema que vamos a resolver en este artículo partimos de un valor entero que indica una cantidad de minutos y debemos crear un algoritmo para convertir esta información en una cantidad de horas y minutos restantes. Es el ejercicio 6 de la serie de problemas básicos de programación en lenguaje C# para resolver en Unity.
Descripción del problema y estrategia para la resolución
El código del algoritmo que resuelve el problema planteado debe ir dentro de la función AlgoritmoEjercicio del Script correspondiente, en este caso el script Ejercicio6. La función AlgoritmoEjercicio será ejecutada al pulsar el botón Ejecutar Algoritmo que hay en pantalla.
Lo que tenemos que hacer es tomar la entrada ingresada por el usuario y convertirla a un valor numérico, de esta forma podremos hacer operaciones matemáticas con ella.
Una vez tenemos el valor ingresado que corresponde a la cantidad total de minutos, tenemos que calcular a cuantas horas equivale y la cantidad restante de minutos..
Luego definimos una variable tipo string llamada «resultado», generamos el mensaje de respuesta concatenando textos junto con los valores calculados y por último escribimos este resultado en pantalla.
Solución del ejercicio
El dato ingresado por el usuario estará almacenado en las variable «dato1». Para convertir estas variables tipo string a una variable tipo entera usamos la siguiente instrucción:
int num1 = int.Parse(dato1);
De esta forma estamos definiendo una variable tipo int llamada num1 que se inicializa con el valor de la entrada convertido a int.
Es importante aclarar que si el string dato1 no tiene formato numérico (por ejemplo contiene letras), no se podrá hacer la conversión y tendremos un error en tiempo de ejecución. En este tipo de ejercicios se asume que la entrada ingresada por el usuario estará en el formato correcto.
Ahora que hemos convertido el strings a int podemos hacer cálculos. Primero calculamos la cantidad de horas tomando la entrada y dividiéndola por 60 (esto es así porque 60 minutos equivalen a 1 hora), la parte entera de esta división será la cantidad de horas. Esto lo podemos hacer con la siguiente intrucción:
int h = num1 / 60;
Un dato interesante es que debido a que num1 y 60 son valores enteros, el resultado de la división será un valor entero, aunque lo almacenemos en una variable tipo float. Osea que si realizamos la operación 70 / 60 el resultado será 1.
Para calcular los minutos restantes hay que usar el operador módulo (%), el cual vimos en el ejercicio 4 en el que determinamos si un número entero era par o impar. El operador módulo nos dará el resto de la división, entonces podemos obtener los minutos restantes con la siguiente operación:
int m = num1 % 60;
Ahora que tenemos calculadas la cantidad de horas y minutos vamos a elaborar el mensaje de respuesta concatenando un texto con los valores, esto lo podemos hacer por ejemplo con la siguiente instrucción:
Como vemos, en la instrucción anterior estamos convirtiendo nuevamente los valores a string para poder concatenarlos.
Finalmente escribimos este resultado en el texto del Canvas en pantalla con la siguiente instrucción:
componenteTexto.text=resultado;
Introducción
En cualquier momento que queramos podemos cargar cualquier escena de Unity a través de código, por ejemplo estando en la escena del menú principal podemos darle a un botón para comenzar y al hacerlo cargar una segunda escena con el primer nivel del juego o cargar una escena donde haya montada una cinemática que comienza a reproducirse ni bien la escena carga. También podríamos tener distintos niveles montados en distintas escenas y luego en la escena del menú principal podríamos tener una ventana con un menú de selección en el que haya un panel con varios botones y hacer que cada botón cargue una escena distinta.
This solution is in the «GDT Solutions for Unity» GitHub repository and on ITCH.IO
En este artículo vamos a ver una solución para cambiar a cualquier escena utilizando botones en Unity, esta solución lo que hace es cargar las escenas por su nombre a través de un único script.
Procedimiento para cargar escenas por nombre al pulsar un botón:
Existen distintas formas de cambiar de escena en Unity pero en todas ellas será necesario poder referenciar de alguna forma la escena que se quiere cargar.
Una forma de referenciar una escena podría ser a partir del valor entero que indica la posición de la escena en la ventana Build Settings, la primer escena comienza a contarse desde el 0 y es la escena que se abrirá ni bien se abra la aplicación.
Otra forma de referenciar la escena que se quiere cargar puede ser a través del nombre que tiene el archivo con el que se guarda la escena. Este es el método que se utiliza en la solución que se puede descargar más arriba.
Instrucción para cargar una escena en Unity
Las instrucciones de código que permiten cargar una escena en Unity por su número de identificación y por su nombre son las siguientes:
Estas instrucciones se pueden simplificar si en la cabecera del Script donde se utilizan se implementa el Namespace UnityEngine.SceneManagement, agregando la siguiente línea de código en la cabecera del script:
using UnityEngine.SceneManagement;
Una vez hecho esto las instrucciones se pueden resumir como:
SceneManager.LoadScene(numeroIdentificacion);
y
SceneManager.LoadScene(nombreEscena);
Introducción
En este problema tenemos como entrada un número natural y debemos realizar la suma de todos los números naturales menores o iguales al número de entrada, es decir los n primeros números naturales. Por ejemplo si la entrada es 3 debemos realizar la operación 1+2+3 y mostrar el resultado en pantalla. Este es el ejercicio 5 de la serie de problemas básicos de programación en lenguaje C# para resolver en Unity.
Descripción del problema y estrategia para la resolución
El código del algoritmo que resuelve el problema planteado debe ir dentro de la función «AlgoritmoEjercicio» del Script correspondiente, en este caso el script «Ejercicio5.cs». La función «AlgoritmoEjercicio» será ejecutada al pulsar el botón con el texto «Ejecutar Algoritmo» que hay en pantalla.
Lo que tenemos que hacer es tomar la entrada ingresada por el usuario y convertirla a un valor numérico, de esta forma podremos hacer operaciones matemáticas con ella.
Una vez que tenemos el valor ingresado, tenemos que hacer la suma de todos los números naturales desde ese número hasta el valor ingresado inclusive y almacenar el resultado en una variable.
Luego definimos una variable tipo string llamada «resultado», generamos el mensaje de respuesta, que será la concatenación de texto junto con el resultado de la sumatoria. Finalmente escribimos este resultado en pantalla.
Solución del ejercicio
El dato ingresado por el usuario estará almacenado en las variable «dato1». Para convertir estas variables tipo string a una variable tipo entera usamos la siguiente instrucción:
int num1 = int.Parse(dato1);
De esta forma estamos definiendo una variable tipo int llamada «num1» que se inicializa con el valor de la entrada convertido a int.
Es importante aclarar que si el string dato1 no tiene formato numérico (por ejemplo contiene letras), no se podrá hacer la conversión y tendremos un error en tiempo de ejecución. En este tipo de ejercicios se asume que la entrada ingresada por el usuario estará en el formato correcto.
Ahora que hemos convertido el strings a int podemos calcular la sumatoria, para esto tenemos que usar alguna estructura de control repetitiva que nos permita realizar una serie de cálculos de manera repetitiva, en este caso, como conocemos la cantidad de repeticiones que hay que hacer lo más conveniente sería usar un bucle for. Pero antes, definamos un valor entero para acumular el resultado de la suma:
int suma = 0;
El acumulador se inicializa con el valor 0, el cual es el elemento neutro para la suma, esto significa que sumarlo no tendrá efecto sobre el total.
A continuación vamos a definir el bucle for de la siguiente manera:
for(int i=1; i<=num1;i++){ //Instrucciones a repetir }
Para definir un bucle for tenemos que indicar algunos parámetros, primero la variable de iteración y su valor inicial, se trata de una variable que se irá modificando en cada repetición, en este caso lo hacemos todo junto con la instrucción «int i=1«, aquí estamos declarando a «i» como variable de iteración e indicamos que comienza valiendo 1.
Luego declaramos la condición que se tiene que cumplir para seguir haciendo repeticiones, en este caso como las operaciones que queremos hacer dependen del valor de entrada y si la entrada es por ejemplo 4 tenemos que efectuar la operación «1+2+3+4», el bucle se tiene que repetir mientras la variable de iteración sea menor o igual al valor de entrada, por esta razón la condición del bucle es «i<=num1«.
Por último definimos la acción que ocurre al finalizar una iteración, usualmente se incrementa en 1 la variable de iteración, por esta razón ponemos «i++«.
Luego de definir estos 3 parámetros abrimos y cerramos llaves y dentro colocaremos todas las instrucciones que deben ejecutarse en cada iteración, he marcado esta zona con un comentario dentro del bucle for.
Ahora tenemos que ver que instrucción colocaremos dentro del bucle for, en este caso lo que queremos hacer es ir sumando los valores enteros de la variable iteración, lo podemos hacer de la siguiente manera:
suma = suma + i;
Es decir sumamos el valor de la variable «suma» con la variable de iteración «i» y el resultado lo almacenamos nuevamente en la variable suma, recordemos que en la primera iteración la variable «suma» vale 0 e «i» vale 1, por lo tanto estaremos realizando la operación «0+1» y almacenando el resultado en «suma». Esta instrucción también la podemos resumir de la siguiente manera y el resultado es el mismo:
suma += i;
Entonces cuando el bucle for finalice, en «suma» tendremos acumulado el valor total de la sumatoria y la respuesta a nuestro problema, así que definimos una variable tipo string llamada «resultado» y elaboramos el mensaje de respuesta, puede ser de la siguiente manera:
string resultado=»El resultado de la suma es: «+ suma.ToString();
Es decir concatenamos un texto al valor de la suma convertido a strings y eso lo almacenamos en la variable «resultado»
Finalmente escribimos este resultado en el texto del Canvas en pantalla con la siguiente instrucción:
Descripción del problema y estrategia para la resolución
El código del algoritmo que resuelve el problema planteado debe ir dentro de la función AlgoritmoEjercicio del Script correspondiente, en este caso el script Ejercicio4. La función AlgoritmoEjercicio será ejecutada al pulsar el botón Ejecutar Algoritmo que hay en pantalla.
Lo que tenemos que hacer es tomar la entrada ingresadas por el usuario y convertirlas a un valor numérico entero, de esta forma podremos hacer operaciones matemáticas con ella.
Luego vamos a comprobar si el número ingresado es divisible por 2, si esto es verdad el número es par, de lo contrario es impar.
Luego definimos una variable tipo string llamada «resultado», generamos el mensaje de respuesta en función de si la entrada ingresada es par o impar y por último escribimos este resultado en pantalla.
Solución del ejercicio
El dato ingresado por el usuario estará almacenado en las variable «dato1». Para convertir estas variables tipo string a una variable tipo entera usamos la siguiente instrucción:
int num1 = int.Parse(dato1);
De esta forma estamos definiendo una variable tipo int llamada num1 que se inicializa con el valor de la entrada convertido a int.
Es importante aclarar que si el string dato1 no tiene formato numérico (por ejemplo contiene letras), no se podrá hacer la conversión y tendremos un error en tiempo de ejecución. En este tipo de ejercicios se asume que la entrada ingresada por el usuario estará en el formato correcto.
Ahora que hemos convertido el string a int vamos a comprobar si este número es divisible por 2, para esto utilizaremos el operador módulo (%), esto nos devolverá el resto de una determinada división entera, por ejemplo si hacemos 4 módulo 2 el valor resultante es 0, ya que la división entre estos dos valores es exacta, si en cambio hacemos 3 módulo 2, el resultado de esta operación es 1 ya que es el resto de 3 dividido 2. Escribamos la siguiente instrucción:
int resto = num1 % 2;
Antes de avanzar vamos a declarar un string llamado «resultado» para escribir el mensaje en pantalla, esto lo hacemos así:
string resultado;
Ahora tenemos que comprobar si el resto es 0, para ello definimos una sentencia if de la siguiente manera:
if(resto == 0 ){ //el número ingresado es par }else{ //el número ingresado es impar }
En la sentencia if anterior he marcado con comentarios las regiones de código en donde el resultado es un número par o un número impar. En estas regiones vamos a elaborar el mensaje de respuesta dependiendo de cada caso:
resultado = «El número ingresado es par.»; o resultado = «El número ingresado es impar.»;
Finalmente escribimos este resultado en el texto del Canvas en pantalla con la siguiente instrucción:
Descripción del problema y estrategia para la resolución
El código del algoritmo que resuelve el problema planteado debe ir dentro de la función AlgoritmoEjercicio del Script correspondiente, en este caso el script Ejercicio3. La función AlgoritmoEjercicio será ejecutada al pulsar el botón Ejecutar Algoritmo que hay en pantalla.
Lo que tenemos que hacer es tomar las dos entradas ingresadas por el usuario que corresponden a los catetos del triángulo rectángulo y convertirlas a valores numéricos, de esta forma podremos hacer operaciones matemáticas entre ellas.
Una vez que tenemos los dos valores ingresados, aplicamos la fórmula del Teorema de Pitágoras para obtener el valor de la hipotenusa.
Luego definimos una variable tipo string llamada «resultado», generamos el mensaje de respuesta concatenando textos junto con el valor de la hipotenusa y por último escribimos este resultado en pantalla.
Solución del ejercicio
Los datos ingresados por el usuario estarán almacenados en las variable «catetoA» y «catetoB». Para convertir estas variables tipo string a variables numéricas usamos la siguiente instrucción:
float a = float.Parse(catetoA);
De esta forma estamos definiendo una variable tipo float llamada «a» que se inicializa con el valor de la entrada convertido a float. Esto tenemos que hacerlo también para el cateto B.
Es importante aclarar que estamos asumiendo que la entrada ingresada por el usuario estará en el formato correcto.
Ahora que hemos convertido los strings a floats podemos calcular la hipotenusa con la siguiente instrucción:
float c = Mathf.Sqrt(a*a + b*b);
Es decir elevamos al cuadrado ambos catetos, los sumamos y luego tomamos la raíz cuadrada.
Ahora calculamos la hipotenusa vamos a elaborar el mensaje de respuesta concatenando un texto con el resultado, esto lo hacemos por ejemplo con la siguiente instrucción:
Finalmente escribimos este resultado en el texto del Canvas en pantalla con la siguiente instrucción:
componenteTexto.text=resultado;
Introducción
Este es el ejercicio 2 de la serie de problemas básicos de programación en lenguaje C# para resolver en Unity. Este problema consiste en calcular un promedio de cuatro valores ingresados por el usuario.
Solución del ejercicio 2 en formato vídeo:
🟢 Solución del ejercicio 2. Calcular promedios en programación
Descripción del problema y estrategia para la resolución
El código del algoritmo que resuelve el problema planteado debe ir dentro de la función AlgoritmoEjercicio del Script correspondiente, en este caso el script Ejercicio2. La función AlgoritmoEjercicio será ejecutada al pulsar el botón Ejecutar Algoritmo que hay en pantalla.
Lo que tenemos que hacer es tomar las cuatro entradas ingresadas por el usuario y convertirlas a valores numéricos, de esta forma podremos hacer operaciones matemáticas entre ellas.
Una vez que tenemos los cuatro valores ingresados, calculamos el promedio haciendo la suma de todos los valores y dividiendo por cuatro, esto lo podemos almacenar en una nueva variable tipo float.
Luego definimos una variable tipo string llamada «resultado», generamos el mensaje de respuesta concatenando textos junto con el valor del promedio y por último escribimos este resultado en pantalla.
Solución del ejercicio
Los datos ingresados por el usuario estarán almacenados en las variable «dato1», «dato2», «dato3» y «dato4». Para convertir estas variables tipo string a variables numéricas usamos la siguiente instrucción:
float num1 = float.Parse(dato1);
De esta forma estamos definiendo una variable tipo float llamada num1 que se inicializa con el valor de la entrada convertido a float. Esto tenemos que hacerlo para los 4 datos de entrada.
Es importante aclarar que si el string dato1 no tiene formato numérico (por ejemplo contiene letras), no se podrá hacer la conversión y tendremos un error en tiempo de ejecución. En este tipo de ejercicios se asume que la entrada ingresada por el usuario estará en el formato correcto. Otro punto importante es el separador para la parte decimal, en algunos paises se utiliza la coma para separar decimales, pero con esta instrucción tenemos que usar punto.
Ahora que hemos convertido los strings a floats podemos calcular el promedio con la siguiente instrucción:
Es decir realizamos la suma de los 4 números y luego dividimos por 4, la «f» que se añade después del 4 en la instrucción anterior nos sirve para indicar que estamos hablando del número 4 en formato float y diferenciarlo del 4 en formato int. En este caso particular poner esa «f» no hace la diferencia, pero más adelante veremos cómo nos podría ocasionar bugs no ponerla.
Ahora que tenemos calculado el promedio vamos a elaborar el mensaje de respuesta concatenando un texto con el resultado, esto lo hacemos por ejemplo con la siguiente instrucción:
Descripción del problema y estrategia para la resolución
El código del algoritmo que resuelve el problema planteado debe ir dentro de la función AlgoritmoEjercicio del Script correspondiente, en este caso el script Ejercicio1. La función AlgoritmoEjercicio será ejecutada al pulsar el botón Ejecutar Algoritmo que hay en pantalla.
Lo que tenemos que hacer es tomar la entrada ingresada por el usuario y concatenar ese texto junto con otros textos para formar un mensaje de bienvenida. Finalmente, imprimir el resultado en pantalla.
Solución del ejercicio
El dato ingresado por el usuario estará almacenado en la variable «dato1». Los strings los definimos entre comillas y para concatenarlos se utiliza el operador +. Entonces supongamos que definimos un string llamado «resultado», podemos escribir la siguiente línea de código:
resultado = «Hola, «+ dato1 + «!»;
Si dato1 contiene por ejemplo el texto «Hernán», el texto almacenado en la variable resultado será: «Hola, Hernán!».
Finalmente escribimos este resultado en el texto del Canvas en pantalla con la siguiente instrucción:
componenteTexto.text=resultado;
Introducción
Vamos a ver una serie de artículos y vídeos sobre cómo pausar un juego en Unity, para ello tendremos que identificar dónde ocurren los cambios en el tiempo.
El sistema de pausa lo tendremos que hacer en función de los elementos que tenga nuestro proyecto, para intentar abarcar una amplia gama de casos monté una escena en Unity que contiene distintos elementos animados y analizaremos qué acciones podemos aplicar para pausar cada uno de ellos. En el siguiente vídeo puedes ver esta escena:
🟢 VÍDEO: Introducción a la serie sobre PAUSAR el JUEGO en UNITY
A continuación voy a listar el resto de los vídeos de la serie junto a una breve descripción, haz clic en el título para abrir el vídeo en una nueva pestaña.
🟢 CREACIÓN DEL SCRIPT DE CONTROL En este vídeo vemos cómo crear un Script con funciones para Pausar, Reanudar el juego y conocer el estado en el que el juego está. De esta forma podremos controlar el estado de pausa del juego en un lugar específico.
🟢 PAUSAR CAMBIANDO LA ESCALA DE TIEMPO EN UNITY En este vídeo vemos la primera acción que podemos aplicar para pausar un juego en Unity, cambiar la escala de tiempo. Esto permitirá pausar eventos que dependan del tiempo, como las funciones FixedUpdate, Invoke, Invoke Repeating, Animator Controllers y RigidBodies.
🟢PAUSAR LAS FUNCIONES UPDATE EN UNITY En este vídeo vemos una manera de pausar el código que se encuentra dentro de las funciones Update, para ello hacemos uso del sistema creado en el vídeo 2. El script con la función Update a pausar deberá preguntarle al sistema de pausa si el juego se encuentra corriendo y si es verdad, ejecutará las instrucciones.
Introducción
He creado una serie de 10 ejercicios básicos de programación para resolver en Unity y además he solucionado cada uno de los problemas a mi manera e hice vídeos para compartir esas soluciones. Estos ejercicios vienen dentro de un paquete de Unity que puedes descargar e importar en tu proyecto y en donde encontrarás todo preparado para que puedas pensar el problema y crear un algoritmo que lo solucione.
Este es el vídeo de presentación de los 10 ejercicios básicos de programación
Al importar el paquete en Unity se creará una carpeta que contiene todo el material para resolver los ejercicios. Hay una carpeta para cada ejercicio, dentro de cada una encontrarán una escena de Unity, un Script y una imagen con la consigna del problema.
En cada Script encontrarán una función llamada «AlgoritmoEjercicio» que es la función que tienen que completar para resolver el problema, valiéndose por supuesto de los datos de entrada.
En la escena ya está montado todo para que al darle al botón Play, se puedan ingresar los datos y estos se envíen al Script y el botón «Ejecutar Algoritmo» activará automáticamente la función antes mencionada dentro del Script de cada ejercicio. Esto lo pueden comprobar ingresando datos o pulsando el botón y viendo los mensajes en consola.
Listado de los ejercicios
A continuación te dejo la lista de los ejercicios de la serie con un pequeño resumen del contenido, haciendo clic en el título puedes ir al artículo con la solución y en la imagen tienes el vídeo en YouTube.
Dadas las longitudes de dos catetos de un triángulo rectángulo, aplicar la fórmula de Pitágoras para hallar el valor de la hipotenusa. Mostrar el resultado en pantalla.
Dadas dos longitudes ingresadas por el usuario que corresponden a los lados de un rectángulo, calcular el perímetro y el área del mismo y escribir el resultado en pantalla.
Ejercicio 8 – Radio de un círculo
Dado un valor de área en metros cuadrados ingresado por el usuario, calcular el radio del círculo que tendría dicha área y mostrar el resultado en pantalla.
Ejercicio 9 – Caracteres en un texto
Dada una entrada de texto ingresada por el usuario, escribir un programa que muestre la cantidad de caracteres que conforman dicho texto.
Ejercicio 10 – Comparación de números
Dados dos números, mostrar en pantalla la relación que existe entre el primero y el segundo número, es decir si el primero es menor que el segundo, igual o mayor.
Introducción
Aquí les traigo una pequeña solución que me pidieron en Discord. Se trata de un prototipo para lanzar canicas en la dirección que apunta una flecha cuando se presiona la barra espaciadora. El prototipo permite modificar los parámetros básicos como la amplitud del giro de la flecha, la rapidez, la velocidad con la que salen disparadas las canicas.
Paquete para descargar
La descarga consiste en un paquete de Unity que pueden importar directamente en su proyecto, esto añadirá una carpeta que contiene todos los archivos necesarios y una escena de prueba.
Introducción
Cuando se carga una escena en Unity, todos sus elementos aparecen como fueron definidos al momento de compilar, es decir, cualquier cambio que haya ocurrido con anterioridad no se va a guardar automáticamente.
Vamos a hacer una serie de ejercicios para entender cómo pasar datos entre escenas en Unity y además guardar estos datos al salir del juego y recuperarlos al momento de cargar el juego. Para ello vamos a utilizar un prototipo que simula ser un sistema de recolección de monedas y compra de items.
Descargar Textura PBR Seamless de Ladrillos para Unity
Dentro del paquete de descarga encontrarás 3 mapas de resolución 256×256 correspondientes al Albedo, Metallic y Normal.
Descargar Textura PBR Seamless de Ladrillos para Unreal Engine
Dentro del paquete de descarga encontrarás 3 mapas de resolución 256×256 correspondientes a Base Color, Normal y Occlusion Roughness Metallic.
Esta página utiliza cookies para analíticas y ads, continua navegando en él si estás de acuerdo. Ajustes de CookiesACEPTAR
Política de Privacidad y Cookies
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.