Tutorial Unity: cómo usar los If Statements
19/11/2018

Tutorial Unity: cómo usar los If Statements

Programación y Diseño Web

La sentencia If en Unity

Dentro de nuestro código vamos a tener la necesidad de querer comparar diferentes condiciones para realizar acciones si esas condiciones se cumplen. Este es un funcionamiento básico en cualquier código de programación, pero además es un funcionamiento básico en nuestro día a día, es decir, nosotros mismos actuamos de una manera diferente según si se cumplen una serie de condiciones. Por ejemplo si ponemos agua a hervir para hacernos una infusión, estamos comparando constantemente si el agua está hirviendo, si el agua no está hirviendo todavía dejamos el agua en el fuego más rato, si el agua ya está hirviendo la retiramos del fuego. Estos “si” son estructuras condicionales que se pueden traducir directamente. Hablemos un poco sobre qué tipo de comparaciones podemos realizar dentro de nuestras sentencias If.

 

== igual que

!= diferente que

< menor que

> mayor que

<= menor o igual que

>= mayor o igual que

 

Éstas son las diferentes condiciones que podemos comparar dentro de nuestras sentencias pongamos el ejemplo sobre el que estábamos hablando antes, el ejemplo del agua hirviendo:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

//creamos una variable donde tendremos la temperatura actual en grados

private float temperaturaActual;

//creamos una variable donde guardamos la temperatura de ebullición del agua

private float temperaturaEbullicion = 100;

void Update(){

//comparamos si la temperatura actual ha llegado a la de ebullición

if( temperaturaActual >= temperaturaEbullicion) {

//quitaría el agua del fuego

}

{

Como podemos ver la estructura consiste en una sentencia if con la condición que se debe cumplir escrita entre paréntisis y todas las acciones que se tienen que realizar si se cumple dicha condición quedan agrupadas entre corchetes.

 

Pongamos el caso que nuestro código gestiona una máquina que se dedica a calentar el agua hasta los 100º centígrados y que una vez llegada a esa temperatura se debe parar, pero mientras no se haya llegado debe seguir calentando el agua, según el ejemplo anterior tendríamos que:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

//creamos una variable donde tendremos la temperatura actual en grados

private float temperaturaActual;

//creamos una variable donde guardamos la temperatura de ebullición del agua

private float temperaturaEbullicion = 100;

void Update(){

//comparamos si la temperatura actual ha llegado a la de ebullición

if( temperaturaActual >= temperaturaEbullicion) {

//quitaría el agua del fuego

DejarDeCalentar();

} else {

SeguirCalentando();

}

}

La sentencia else (si no) nos permite especificar qué acciones se tienen que realizar si no se cumple la condición especificada en la sentencia if que hemos definido anteriormente.

 

Una de las cualidades que podemos encontrar en las estructuras de sentencias es que podemos usarlas encadenando sentencias. Aunque según como quede toda la estructura de las sentencias sería recomendable usar otro tipo de sentencias vamos a ver cómo podemos definir esas estructuras. Pongamos por ejemplo una estructura que hace una cosa diferente dependiendo del color del semáforo:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

//creamos una variable donde guardar el nombre del color del semáforo

private string colorSemaforo;

 

void Update(){

if( colorSemaforo == “rojo”){

PararPeatones();

} else if( colorSemaforo == “amarillo”){

FrenarPeatones();

} else {

AcelerarPeatones();

}

}

 

Con la sentencia else if podemos decir que si no pasa la condición anterior se compare con una nueva condición y finalizando con la sentencia else podemos definir lo que se hará en el resto de situaciones.

Por último vamos a ver qué pasa cuando queremos comparar varias condiciones a la vez, dentro de los operadores condicionales encontramos unos operadores que nos permiten realizar condiciones mucho más complejas como son:

&& y

|| o

Partiendo del primer ejemplo, si queremos que nuestra máquina de calentar agua tiene que mantener la temperatura del agua entre 50 y 80 grados. Podríamos hacer el siguiente código:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

//creamos una variable donde tendremos la temperatura actual en grados

private float temperaturaActual;

 

void Update(){

//si la temperatura actual está dentro del margen

//es mayor que 50 Y menor que 80

if( temperaturaActual > 50 && temperaturaActual < 80) {

IntentarMantenerTemperatura();

//si la temperatura actual está por encima del margen

} else if(temperaturaActual > 80) {

EnfriarAgua();

//en cualquier otro caso (solo puede ser que esté por debajo)

} else {

CalentarAgua();

}

}

 

En el caso de que queramos que nuestra máquina nos avise siempre que la temperatura se salga de los márgenes que hemos comentado antes podríamos tener el código escrito de la siguiente manera:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

//creamos una variable donde tendremos la temperatura actual en grados

private float temperaturaActual;

 

void Update(){

//si la temperatura está fuera del margen

//es menor que 50 o es mayor que 80

if( temperaturaActual < 50 || temperaturaActual > 80) {

AvisoAlUsuario();

} else {

NoAvisoAlUsuario();

}

}

 

¿Ves útil el uso de sentencias if en el código? Dejanos tu comentario

 

Curso relacionado: Curso superior de diseño y desarrollo de videojuegos con Unity 3D

Comparte en:

Ingeniero Técnico en Telecomunicaciones. Trabaja actualmente como Lead Game Developer y Game Designer en una compañía de videojuegos.

Big data y Hadoop
12/12/2018
Thaís Balagueró

Big data y Hadoop

En este post definiremos más en detalle que es Hadoop, cuando aparece y qué representa dentro de Big Data.

¿Qué son los datasets y los dataframes en el Big Data?
13/11/2018
Thaís Balagueró

¿Qué son los datasets y los dataframes en el Big Data?

En el post de hoy vamos a explicar que son los datasets y los dataframes en el contexto de Big Data. Igual que todo el tema relacionado con el Big Data y la gestión d...

La importancia del testeo en los videojuegos
05/11/2018
Jordi Mula

La importancia del testeo en los videojuegos

En este post conoceremos el trabajo de un testeador de videojuegos, en que fases se necesita hacer el testing en los videojuegos y realmente como se testan.