Vamos a ver cómo guardar textos en Unity utilizando la clase PlayerPrefs, los cuales se almacenan en variables tipo string, luego veremos cómo cargar este string.
Esto nos puede ser útil por ejemplo para guardar en la memoria el nombre del jugador.
Para guardar un string en Unity usando PlayerPrefs vamos a usar el método estático «SetString», una función que necesita que le demos dos parámetros.
El primer parámetro es un string con el nombre que va a tener esta variable que vamos a almacenar, esto permitirá que luego lo podamos recuperar. El segundo parámetro es el string que queremos guardar.
La instrucción que hará el guardado de los datos en Unity se vería de la siguiente forma:
PlayerPrefs.SetString(«nombreString»,texto);
En este caso indicamos el nombre del dato entre comillas porque es un string, el segundo parámetro lo indicamos utilizando una variable tipo «string» llamada «texto».
Cómo cargar un string con PlayerPrefs
Para cargar un string en Unity usando PlayerPrefs vamos a usar el método estático «GetString», una función que se puede usar de dos formas distintas.
En la primer forma le damos un parámetro que va a ser el nombre del dato que queremos recuperar, es decir, el nombre que le dimos cuando ejecutamos la función «SetString» que vimos anteriormente. Lo hacemos de la siguiente forma.
texto=PlayerPrefs.GetInt(«nombreString»);
La ejecución del método estático «GetString» de PlayerPrefs dá como resultado un string, es por eso que se lo asigna a la variable «texto» en la instrucción de arriba, esta variable texto debe estar declarada como string.
La segunda forma consiste también en darle el nombre del dato que utilizamos en la ejecución de «SetString» pero además damos un valor por defecto que se utilizará en caso de que no haya un dato guardado bajo ese nombre, esto se hace de la siguiente forma.
texto=PlayerPrefs.GetInt(«nombreString»,» «);
Introducción
Vamos a ver cómo guardar números reales en Unity utilizando la clase PlayerPrefs, los cuales se almacenan en variables tipo float. Luego veremos cómo cargar este número entero.
Esto puede ser útil para guardar parámetros de configuración que se encuentren entre 0 o 1.
Para guardar un float en Unity usando PlayerPrefs vamos a usar el método estático «SetFloat», una función que necesita que le demos dos parámetros.
El primer parámetro es un string con el nombre que va a tener esta variable que vamos a almacenar, esto permitirá que luego lo podamos recuperar. El segundo parámetro es una variable tipo float con el dato que queremos guardar.
La instrucción que hará el guardado de los datos en Unity se vería de la siguiente forma:
En este caso indicamos el nombre del dato entre comillas porque es un string, el segundo parámetro lo indicamos utilizando una variable tipo en este caso llamada «numeroReal».
Cómo cargar un float con PlayerPrefs
Para cargar un float en Unity usando PlayerPrefs vamos a usar el método estático «GetFloat», una función que se puede usar de dos formas distintas.
En la primer forma le damos un parámetro que va a ser el nombre del dato que queremos recuperar, el nombre que le dimos cuando ejecutamos la función «SetFloat» que vimos anteriormente. Lo hacemos de la siguiente forma.
La ejecución del método estático «GetFloat» de PlayerPrefs dá como resultado un número tipo float, es por eso que se lo asigna a la variable «numeroReal» en la instrucción de arriba.
La segunda forma consiste también en darle el nombre del dato que utilizamos en la ejecución de «SetFloat» pero además damos un valor float por defecto que se utilizará en caso de que no haya un dato guardado bajo ese nombre, esto se hace de la siguiente forma.
Vamos a ver cómo guardar números enteros en Unity utilizando la clase PlayerPrefs, los cuales se almacenan en variables tipo int, luego veremos cómo cargar este número entero.
Este método te será útil para guardar el score o puntuación en Unity, siempre que la puntuación está representada por un número entero por supuesto.
En el siguiente vídeo se ve un ejemplo combinado en el que se utiliza Player Prefs para guardar y cargar distintos tipos de datos en Unity.
Cómo guardar un número entero con PlayerPrefs
Para guardar un número entero en Unity usando PlayerPrefs vamos a usar el método estático «SetInt», una función que necesita que le demos dos parámetros.
El primer parámetro es un string con el nombre que va a tener esta variable que vamos a almacenar, esto permitirá que luego lo podamos recuperar. El segundo parámetro es el valor entero que queremos guardar.
La instrucción que hará el guardado de los datos en Unity se vería de la siguiente forma:
En este caso indicamos el nombre del dato entre comillas porque es un string, el segundo parámetro lo indicamos utilizando una variable tipo «int».
Cómo cargar un número entero con PlayerPrefs
Para cargar un número entero en Unity usando PlayerPrefs vamos a usar el método estático «GetInt», una función que se puede usar de dos formas distintas.
En la primer forma le damos un parámetro que va a ser el nombre del dato que queremos recuperar, el nombre que le dimos cuando ejecutamos la función «SetInt» que vimos anteriormente. Lo hacemos de la siguiente forma.
La ejecución del método estático «GetInt» de PlayerPrefs dá como resultado un número entero, es por eso que se lo asigna a la variable «numeroEntero» en la instrucción de arriba.
La segunda forma consiste también en darle el nombre del dato que utilizamos en la ejecución de «SetInt» pero además damos un valor por defecto que se utilizará en caso de que no haya un dato guardado bajo ese nombre, esto se hace de la siguiente forma.
Con un amigo vamos a hacer directo el día Sábado 9 de Mayo del 2020. La idea es hacer una reunión a la distancia, tomar algo e intentar resolver un problema en conjunto con lo que cada uno sabe. Vamos a tratar de resolver todo en el momento, osea que seguramente habrá mucha improvisación y búsqueda de información.
Además de escuchar música y tomar cervezas, el objetivo es establecer una comunicación entre un prototipo hecho en Unity y una base de datos MySQL.
Es decir que por un lado vamos a tener en una computadora un proyecto de Unity que se programa en lenguaje C# y por otro lado tenemos un servidor remoto que tiene una base de datos que puede ser leída y modificada usando funciones PHP.
Condiciones iniciales
Para resolver el problema vamos a partir de un prototipo de Unity que consiste en un escenario simple y un control en primera persona.
Aquí te puedes descargar el paquete de Unity y luego tienes que importarlo.
Introducción
En este artículo vamos a ver qué es un rectángulo y cómo calcular el perímetro y al área de un rectángulo.
¿Qué es un Rectángulo?
El rectángulo es una figura geométrica de cuatro lados en el que sus cuatro ángulos internos son de 90°. Para dibujar un rectángulo necesitamos conocer dos de sus lados, usualmente llamados base y altura, en la figura 1 podemos ver que estos lados son a y b.
Fig. 1: Un rectángulo genérico.
Cómo calcular el perímetro de un rectángulo
El perímetro es la medida del contorno de la figura geométrica, como si tomáramos sus cuatro lados y los pusiéramos uno a continuación del otro.
El perímetro de un rectángulo es la suma de todos sus lados, como dos de sus lados son coincidentes con los otros dos, podemos calcularlo de la siguiente forma:
perímetro = 2*a+2*b
* : multiplicación
Cómo calcular el área de un rectángulo
El área es la superficie que ocupa la figura geométrica.
El área del rectángulo es la multiplicación de su base por su altura:
área = a * b
Calcular el perímetro y el área de un cuadrado
Un cuadrado es un rectángulo en el que todos sus lados miden lo mismo, supongamos que sus lados miden «a«, el perímetro de un rectángulo está dado por:
perímetro = 4*a
El área de un cuadrado de lado «a» está dada por a elevado al cuadrado:
área = a*a = a ^ 2
^ : exponente
Introducción
En este artículo voy a mostrar dos formas de calcular porcentaje, la que usualmente nos enseñan en el colegio y también otra forma que me resulta mucho más simple, esta forma no me la enseñaron ni en el colegio ni en la universidad, pero la deduje usando conocimientos básicos de matemática
Procedimiento para calcular el porcentaje de una cantidad
El porcentaje se calcula usando regla de tres simple considerando que la cantidad total es el 100%.
1. Partimos de una cantidad y un porcentaje que tenemos que calcular de esa cantidad.
2. Multiplicamos la cantidad por el valor del porcentaje y dividimos el total por 100. El resultado es el cálculo del porcentaje de la cantidad.
Ejemplo 1: Calcular el 13% de 3250.
La cantidad total es 3250 y queremos saber cuánto es el 13% de esta cantidad. Hacemos la operación (3250*13/100) cuyo resultado es: 422,5.
Respuesta: El 13% de 3250 es 422.5.
Dado que siempre vamos a multiplicar la cantidad total por el porcentaje y a esto dividirlo por 100, lo que podemos hacer es calcular mentalmente el valor del porcentaje dividido 100 y luego multiplicar la cantidad total por ese valor, esto nos ahorra un paso en la calculadora.
Por ejemplo en el caso anterior teníamos la operación (3250*13/100), 13/100 podemos calcularlo mentalmente de manera muy fácil, simplemente debemos correr la coma (o punto) decimal, 13/100 = 0,13. Luego en la calculadora resolvemos la operación (3250*0,13) y nos ahorramos la división por 100.
Procedimiento para calcular el porcentaje de aumento o disminución
Hay problemas en los que alguna cantidad tiene un determinado porcentaje de aumento o de disminución.
Ejemplo 2: Si un personaje tiene 250 puntos de vida y al consumir un power-up sufre un aumento del 25% de sus puntos de vida. ¿Cuántos puntos de vida tiene en total luego de consumir el power-up?
En este caso la cantidad inicial es 250 HP (health points o puntos de vida), si tuvo un aumento del 25% quiere decir que ahora a esos 250 HP se sumó el 25% de esos 250 HP. Por lo tanto para resolver este problema calculamos el 25% de 250 y a ese resultado le sumamos los 250 iniciales, dando un total de 312.5 HP.
En este caso también podemos calcular el porcentaje de aumento o disminución de manera muy simple aplicando algunas propiedades matemáticas.
La cuenta que hicimos para calcular el porcentaje anterior fue: (250+250*25/100), osea de manera genérica hacemos la operación: (cantidad+cantidad*porcentaje/100). Si sacamos «cantidad» como factor común tenemos: ( cantidad*(1+porcentaje/100) ) y porcentaje/100 es algo que podemos resolver mentalmente corriendo la coma de porcentaje dos lugares a la izquierda. Por lo tanto calcular aumento o disminuciones porcentuales es algo que podemos hacer con una sola operación en la calculadora.
Por ejemplo, para resolver el ejercicio anterior tenemos que hacer la cuenta: ( 250*1.25 ) y ese es el resultado.
Si tenemos que calcular el valor con un 13% de disminución hacemos la siguiente multiplicación: ( 250*0.87 = 217.5 ).
Introducción
En este artículo vamos a ver cuáles son las diferencias entre una clase y un objeto en programación orientada a objetos, además encontrarás un vídeo del canal en el cual explico el concepto de clase en programación.
Continuando con la información, «CLASE» y «OBJETO» son dos conceptos de la programación orientada a objetos que se utilizan para crear modelos computacionales y nos pueden ayudar a resolver problemas complejos gracias a que nos permiten aumentar la abstracción, es decir mirar los problemas desde una perspectiva mas amplia.
Es importante aclarar estos temas ya que son bastante abstractos, al fin y al cabo las clases y los objetos no dejan de ser unos y ceros en memoria, así que para poder comprenderlos es necesario usar la imaginación y razonarlo por analogía.
Resumen de las principales diferencias entre CLASES y OBJETOS
1. Una clase es una estructura de programación definida por el usuario mientras que un objeto es un tipo de dato que surge a partir de la clase de programación.
2. Las clases se definen en el proceso de desarrollo mientras que los objetos se crean en tiempo de ejecución, es decir cuando el programa está corriendo. La creación de un objeto se suele llamar «instanciación», ya que lo que se hace es crear «instancias» de una clase.
3. En una clase se definen datos comunes a todos los objetos, luego los objetos son creados utilizando esa información y adoptan un estado particular, definido por el valor de sus variables internas, que puede ir cambiando en el transcurso de su vida. Esto quiere decir que podemos tener distintos objetos que provienen de la misma clase pero difieren en sus estados.
¿Qué es una clase en PROGRAMACIÓN ORIENTADA A OBJETOS?
En esencia, una clase en programación orientada a objetos es la definición de un tipo de dato. Cómo se hace esta definición va a depender de qué es lo que estamos programando y con qué herramientas, pero en general una clase se define en un Script de Programación, tiene un nombre de identificación, proviene de una clase padre que se encuentra más arriba en la jerarquía de herencia (en general la clase base es Object, padre de todas las clases) y en una clase se definen los campos y métodos que definen el comportamiento del tipo de objeto que se está modelando.
Fig. 1: Ejemplo de una clase en programación en C# para el motor Unity.
Fig. 2: Ejemplo de una clase en programación en Java en el IDE NetBeans.
¿Qué es un objeto en PROGRAMACIÓN ORIENTADA A OBJETOS?
Un objeto es una entidad que se crea tomando como base una clase de programación, el proceso de creación ocurre durante la ejecución del programa y se lo conoce como instanciación. El objeto adquiere un estado durante su creación y puede ir modificándose durante todo el tiempo de ejecución hasta que el programa finalice o se pierda la referencia de ese objeto y sea eliminado por el recolector de basura.
Relación entre Clases y Objetos
Los objetos surgen de las clases, son creados a partir de la información definida en una clase de programación.
Conclusión
Hemos visto qué es una clase y que es un objeto en programación orientada a objetos y las principales diferencias entre clase y objeto. Las clases son como planos de diseño en donde se describe la información y el comportamiento que tendrán los objetos, luego en nuestro código podemos hacer uso de esa información y ese comportamiento a través de los objetos, que son entidades que hay que instanciar manualmente cuando se las necesite. Con la clase podemos crear muchas copias del mismo objeto y luego cada copia tendrá su propio estado y evolucionar a su manera.
Podemos pensar que las clases son como ideas o reglas concebidas para describir un objeto, mientras que el objeto es la materialización de esas ideas, esto por supuesto es es metafórico ya que las clases y los objetos no dejan de ser unos y ceros ubicados en la memoria de los ordenadores.
Vídeo hablando sobre el concepto de clases en programación
En este vídeo hago un análisis sobre qué son las clases y los objetos, no desde el punto de vista de la programación sino desde la observación de objetos en el mundo y nuestra capacidad de clasificarlos, no solo se ven las principales diferencias entre clase y objeto sino que también intento darle un significado a la palabra «clase» en programación.
En este artículo voy a mostrar el proceso detallado para acceder a una variable definida en otro script en Unity.
El principal problema al que nos enfrentamos es el siguiente, ayer entró una persona a preguntar cómo leer el valor de defensa que tiene un enemigo desde el script del jugador, hace un rato, justo antes que tú, vinieron a preguntar cómo hacer que un script de control acceda a la cantidad total de monedas recolectadas para saber si se ha conseguido el objetivo. Y ahora tú estás aquí con tu propio proyecto distinto al de los demás, con tus propios scripts a los que les has dado unos nombres muy particulares.
Para resolver este problema voy a explicar la soluciónUTILIZANDO NOMBRES GENÉRICOS (como «ScriptA» y «ScriptB«), tendrás que entender el procedimiento para este ejemplo genérico en particular y luego tendrás que aplicar lo que has entendido a tu propio caso particular, es decir deberás determinar quiénes son los ScriptA y ScriptB en tu caso particular.
Si prefieres un vídeo paso a paso tengo uno buenísimo:
Se trata de un ejemplo guiado en el que si haces lo mismo que hago yo, conseguirás llamar a una FUNCIÓN que está definida en otro script y también ACCEDER A UNA VARIABLE que está en otro script en Unity, la idea es que entiendas el procedimiento y luego lo puedas adapatar para usarlo en tus propios scripts.
Procedimiento paso a paso para acceder a una variable de otro Script en Unity
Paso 1. Definir cuáles son los Scripts involucrados
Este es un paso muy importante para que podamos resolver el problema de los nombres, tus scripts tienen un nombre muy particular, distinto al de los scripts de las otras personas que han entrado aquí.
Por favor ten muy presente estos dos puntos:
En este ejemplo genérico vamos a usar dos scripts, sus nombres serán «ScriptA» y «ScriptB«.
La variable que queremos acceder se encuentra en ScriptB y la vamos a acceder a esta variable desde ScriptA.
Paso 2. Asegurar que la variable sea accesible desde un contexto externo
Debemos asegurarnos que la variable que queremos acceder (en ScriptB) esté declarada con visibilidad pública, de esa forma esta variable podrá ser accedida desde un contexto externo, por ejemplo desde el ScriptA.
Por ejemplo, si la variable que queremos acceder fuese de tipo int y su nombre fuese «variableEjemplo«, en ScriptB deberíamos definirla de la siguiente manera:
public int variableEjemplo;
SI LA VARIABLE NO TIENE VISIBILIDAD PÚBLICA NO PUEDE SER ACCEDIDA DESDE OTROS SCRIPTS
Paso 3. Definir un tipo de dato que nos permita acceder al script donde está la variable
Recordemos que desde ScriptA queremos acceder a ScriptB, por lo tanto dentro de ScriptA tenemos que definir una variable que sea del tipo ScriptB, esta variable nos permitirá acceder desde ScriptA a las variables y funciones públicas definidas en ScriptB.
Podemos definir esta variable de la siguiente manera:
public ScriptB variableTipoB;
Paso 4 (CRUCIAL). Inicializar la variable anterior para que apunte al componente que queremos acceder
No encuentro un adjetivo preciso para decirte lo IMPORTANTE que es esta parte, no solo para resolver este problema en particular de acceder a una variable de otro script, sino para CUALQUIER COSA QUE QUERAMOS HACER EN UNITY. Se trata de poder referenciar un objeto preciso desde un Script.
El punto es que la variable que definimos en el paso anterior, si no la inicializamos tiene valor null y si intentamos usarla en este estado tendremos en consola un error de Null Reference Exception.
Tenemos que asegurarnos de que la variable tenga en su interior alojado el componente apropiado al cual queremos hacer referencia, en este caso particular al componente tipo ScriptB.
Esto lo podemos hacer de muchas formas, una de las más simples es ir a la escena de Unity y en el inspector del ScriptA arrastrar al campo tipo ScriptB el GameObject que tiene asignado el ScriptB, de esa forma colocamos en la variable ese componente y lo podemos usar dentro del ScriptA.
Paso 5. Utilizar la variable tipo ScriptB para para acceder a la variable definida dentro de ese script
Una vez que completamos el paso anterior ahora tenemos una variable tipo ScriptB que contiene la referencia del componente tipo ScriptB que está asignado en un GameObject en la escena de Unity.
Para acceder a una variable definida dentro del otro script utilizamos esa variable tipo ScriptB y con el operador punto accedemos a la variable que nos interesa. De acuerdo al ejemplo dado en este paso a paso esto lo haríamos de la siguiente forma:
variableTipoB.variableEjemplo
La expresión anterior es la variable que está definida en el otro script, esta variable podemos usarla dentro del ScriptA o cambiarle su valor si así lo deseamos.
Introducción
En este artículo vamos a ver cómo ejecutar funciones definidas en un Script desde un segundo Script. En primer lugar vemos el procedimiento genérico.
🟢 Un vídeo sobre cómo llamar a una FUNCIÓN que está definida en otro script y cómo ACCEDER A UNA VARIABLE que está en otro script en Unity.
1. Partimos con 2 Scripts A y B. En el Script A está la función que queremos llamar. En el Script B vamos a hacer la llamada a la función que está en A.
2. En el script A nos aseguramos que la función está declarada como pública, sino no podremos acceder a ella desde un contexto externo a A.
3. En el script B declaramos un objeto de tipo A y debemos encontrar la referencia de ese objeto. Esto va a depender de dónde estamos programando, en el caso de Unity vamos a hacerlo en el método Start y con la instrucción FindObjectOfType.
4. Para llamar a la función en el otro Script A desde B, usamos la rererencia que definimos de A y con el operador punto podemos acceder a ella y ejecutarla dentro del Script B.
Introducción
La sentencia IF nos permite tomar una decisión en función de si una condición es verdadera o falsa.
La alternativa simple consiste en realizar una acción si la condición es verdadera y en caso contrario no hacer nada. La alternativa doble nos permite realizar una segunda acción en caso de que la condición sea falsa.
En el siguiente video puedes ver cómo definir una sentencia if en lenguaje C# con ejemplos en Unity.
A continuación se pueden descargar el Script para probar las distintas formas de declarar una sentencia If.
Formas de expresar la condición lógica
La forma más simple sería usar una variable booleana en la condición, pero no es la única forma.
Expresión Lógica
Otra forma de hacerlo es crear una expresión lógica usando operadores que determine si la condición es verdadera o falsa.
En el video propuse el siguiente ejemplo: «Podemos tener hambre o no, si tenemos hambre hay dos formas de comer, una es estar en la casa y además tener comida o sino la otra forma es estar en una tienda y tener dinero».
Con estos supuestos podemos crear una expresión lógica que determine si comemos o no. La podemos ver a continuación.
Esta expresión será verdadera cuando estemos en condiciones de comer y por ende podemos usarla como condición de una sentencia if.
Método que devuelva un valor lógico
Un método es una función que podemos ejecutar usando su nombre, para más información ver Modularización y Métodos en Programación. Si tenemos un método que devuelve un valor booleano, su ejecución equivale a tener e tener este valor, por lo tanto podemos usar esto como condición de una sentencia IF.
En el video defino un método llamado «ShouldWeEat()» que retorna el valor de la expresión booleana.
Expresiones Lógicas usando otro tipo de variables
Usando los operadores de comparación (AND, OR, >, <, >=, <=, etc) podemos crear expresiones lógicas usando otro tipo de variables como enteros, floats, caracteres, también podemos comparar Strings. En el video utilizo como condición la siguiente expresión:
money >= foodCost
Si el dinero que tenemos es mayor o igual al costo de la comida podremos comprarla, sino no podremos.
Expresión lógica combinando métodos y operadores
Podemos combinar los dos casos anteriores, si tenemos un método que devuelve un valor entero por ejemplo, podemos comparar la ejecución de este método con otro valor y crear una expresión lógica.
Introducción
En este video se hace paso a paso el modelo 3D de una copa de vino utilizando una imagen de referencia. Es un modelo muy sencillo pero nos sirve para ver varias herramientas y trucos de Blender 2.8.
Al terminar el modelo ajustamos algunos parámetros como el nombre, material, movemos el origen, ajustamos la escala del objeto. Luego exportamos el modelo de Blender a Unity en formato FBX. En Unity creamos un material para el vidrio de la copa, configuramos el Shader en modo transparencia, ajustamos el color y el alpha, la suavidad y vemos cómo hacer para que las normales del modelo 3D las calcule Unity, esto en mi caso corrige unos problemas con los reflejos en Unity.
Índice de tiempos de interés
0:13 Imagen de referencia 1:03 Modelado de la copa, forma básica 2:18 Más detalles añadiendo Edge Loops 3:11 Smooth Shading para suavizar caras 3:20 Parte interior de la copa 4:28 Nombre del objeto y material 4:41 Ajustar el origen, punto de pivoteo 5:08 Ajustar el tamaño del objeto 6:33 Aplicar transformaciones y exportar para Unity 7:10 Importar y configurar Shader Vidrio 7:45 Calcular normales en Unity, últimos detalles
En la vista frontal se coloca una imagen de referencia con cierta transparencia para crear el modelo 3D de la copa.
Modelado de la copa de vino
Como se trata de una pieza de revolución, partimos de un cilindro en la base y en el modo edición hacemos extrusiones y escalamos siguiendo la forma en la imagen de referencia.
Inicialmente buscamos la forma básica de la copa y luego se añaden detalles creando nuevos Edge Loops, que son subdivisiones de la geometría, en donde se necesitan.
Se utiliza Smooth Shading para suavizar las caras del modelo sin la necesidad de tener una alta densidad de polígonos.
Finalmente modelamos el interior de la copa.
Ajustes antes de exportar
Antes de llevar el modelo a Unity ajustamos algunos parámetros como el nombre del objeto, agregamos un material, ajustamos la escala para que nos quede en tamaño real y aplicamos las transformaciones.
Configurar Shader Transparente para la copa
En Unity vamos a crear un material para la copa, utilizamos el Standard Shader en modo de renderizado transparente. Ajustamos el color, la componente Alpha para la transparencia y otros parámetros para crear un Shader similar al vidrio de la copa.
Introducción
Lo que se busca en esta solución es encontrar una caja con el mínimo volumen que encierre a un modelo 3D en Unity.
En el siguiente video explico cómo usar la solución y qué cosas hay que tener en cuenta al momento de crear el modelo 3D para no tener problemas en Unity.
🟢 VÍDEO: Cómo crear un cubo que contenga un objeto en Unity
En la descarga vienen dos archivos, un Script llamado «WrappingCube» que se debe asignar al objeto que queremos envolver con la caja. El otro archivo es un material transparente predefinido, este material lo podemos asignar al espacio en el inspector del componente WrappingCube, este material se asignará automáticamente al cubo.
Cómo se genera el cubo que envuelve al modelo 3D
Para generar el cubo se utiliza algo llamado «Bounding Box», que es precisamente una caja que encierra al objeto, sin embargo hay que tener en cuenta un detalle y es que esta bounding box es una caja que siempre está orientada de acuerdo a los ejes del mundo, por lo tanto si giramos la pieza, la bounding box ajustará sus dimensiones de ancho, largo y alto hasta cubrir completamente el modelo.
Por lo tanto, para que esta solución funcione, el modelo 3D debe venir con la orientación normalizada desde Blender, esto significa orientar el modelo de una forma coherente de acuerdo a los ejes coordenados globales y luego aplicarle la rotación al objeto.
Introducción
Esta solución consiste en una forma de controlar al prefabricado de inteligencia artificial de Standard Assets, Ethan, haciendo clics en el escenario.
Al hacer clic derecho el personaje caminará hacia la posición indicada y si se hace doble clic, el personaje correrá hacia la posición indicada.
Al importar el paquete se debe hacer un Bake del Navmesh antes de entrar en el modo juego, de otra forma nos dará error y el personaje no se moverá. Para hacer esto vamos al GameObject llamado «WalkAreas» dentr de «Castle» y en el componente «Nav Mesh Surface» hacemos clic en Bake.
Introducción
En este artículo vamos a ver cómo generar números aleatorios en Unity, comenzando con los números enteros y reales, es decir vamos a ver cómo asignar a las variables tipo int y tipo float números generados aleatoriamente.
En este artículo vamos a ver qué función debemos ejecutar para cerrar el juego en Unity. Para probar esto crearemos una interfaz gráfica simple con un botón, luego un Script que contendrá la función que se encarga de cerrar el juego en Unity y finalmente haremos que el botón ejecute esa función cuando se lo pulse.
Concretamente la instrucción para salir del juego en Unity es:
Application.Quit();
Pero, ¿dónde colocamos esta instrucción?
Tengo dos vídeos que hablan sobre cerrar el juego en Unity
En el primer vídeo creamos una función dentro de un script que cerrará el juego al ejecutarla y además nos hace salir del modo juego en el caso de que estemos trabajando en el editor de Unity. Puedes verlo a continuación.
El segundo vídeo muestra cómo implementar una ventana de confirmación para cerrar el juego en Unity, lo encontrarás al final de este artículo.
Interfaz Gráfica para el testeo
Vamos a usar una interfaz gráfica muy simple que va a consistir en un Canvas con un botón que al pulsarlo ejecutará la función para cerrar el juego.
Script con la función de cerrar el juego
Vamos a crear un Script llamado «Control» que va a estar asignado a un GameObject cualquiera de la jerarquía y que en contendrá una función pública llamada «Exit» (ver qué es un método en programación y cómo usarlo).
Dentro del método «Exit» colocaremos una única instrucción que será la encargada de cerrar el juego.
Application.Quit();
La idea es que el botón de la interfaz gráfica ejecute esta función cuando sea pulsado.
Para esto seleccionamos el botón en la jerarquía y en el inspector, en la sección OnClick hacemos clic en el signo más para agregar un nuevo campo, arrastramos el GameObject que tiene la función pública para cerrar el juego y utilizando el menú desplegable buscamos esta función en la lista.
Conclusión
Hemos visto de manera muy simple cómo cerrar el juego en Unity, para esto debemos ejecutar la instrucción «Application.Quit()». En este caso la ejecutamos al pulsar el botón de salir de la interfaz gráfica, pero podríamos hacerlo de distintas formas, por ejemplo al pulsar escape dos veces seguidas.
Ahora toca pensar qué tareas deberíamos llevar a cabo al cerrar el juego y asegurarnos de que se ejecuten antes de la instrucción para cerrar el juego. Por ejemplo qué información debemos guardar para recuperarla en la próxima sesión.
EXTRA: Salir del juego con ventana de confirmación en Unity
A continuación puedes descargar el paquete de Unity para importarlo en tu proyecto y obtener los Assets.
El siguiente vídeo describe el funcionamiento de la solución para descargar.
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.