#1 Leer entradas. Métodos de la Clase Input [Serie Fundamental de Unity]

Introducción

En este artícu­lo vamos a leer entradas del tecla­do y el mouse en Uni­ty uti­lizan­do la clase Input de Uni­ty. Esta clase tam­bién nos per­mite acced­er a otros per­iféri­cos como joy­sticks, entradas tác­tiles, acel­erómetro, girós­copo, entre otras señales de entrada. 

Página principal del proyecto

Antes de empezar te invi­to a ver el sigu­iente video en el que se resuelve este problema:

🟢 Leer entradas. Méto­dos de la Clase Input

Procedimiento

En el primer video vamos a tra­ba­jar en la estación de entradas, que con­siste en mod­e­los para las teclas "WASD" y botones del mouse.

El obje­ti­vo es lograr que cam­bi­en de col­or cuan­do la entra­da cor­re­spon­di­ente esté pulsada.

proyecto unity3d modelo 3d hecho en blender de las teclas wasd, un mouse y un cartel que dice input station
Fig. 1: Estación de entradas del GameDevLab.

En la jer­ar­quía hay un GameOb­ject lla­ma­do #1 Input. Este obje­to tiene todos los ele­men­tos rela­ciona­dos a la estación de entradas.

Fig. 2: Jer­ar­quía. La estación de entradas es el GameOb­ject lla­ma­do #1 Input.

Este GameOb­ject tiene asig­na­do el script Read Input, que será el encar­ga­do de leer las entradas y realizar las acciones sobre los ele­men­tos de la estación.

Fig. 3: Script Read Input asig­na­do al GameOb­ject #1 Input.

No es nece­sario hac­er nada en la jer­ar­quía. Vamos a la car­pe­ta "Scripts to Com­plete", "Video 1 — Read Inputs" y abri­mos el script "Read­In­put".

ejemplo de script c# para unity 3d
Fig. 4: Script Read Input sin com­ple­tar. El códi­go fal­tante va en el méto­do Update.

¿Por qué el código debe ir en el método Update?

Todos los Scripts que extien­den su com­por­tamien­to de la clase MonoBe­hav­iour tienen implíc­i­to el méto­do Update, el cual se evalúa automáti­ca­mente en cada frame de nue­stro juego.

Como se expli­ca en el video, si nue­stro juego fun­ciona a 60 fps con­stantes, el méto­do Update se eje­cu­ta 60 veces por segundo.

La lec­tura de las entradas es un even­to aleato­rio, por lo tan­to no podemos deter­mi­nar en qué momen­to el jugador pre­sion­ará un botón. Por esta razón, cuan­do nece­si­ta­mos leer las entradas, debe­mos hac­er­lo en todos los frames.

¿Cómo hacemos la lectura de las entradas?

Imag­inemos que podemos pre­gun­tar a la com­puta­do­ra en lengua­je colo­quial por el esta­do de las entradas, ¿Qué pre­gun­tas le haríamos?

Pre­gun­tas sim­ples como las siguientes.

Fig. 5: Pre­gun­tas que debe­mos hacer.

Si la respues­ta a estas pre­gun­tas es si, eje­cutare­mos una acción apropi­a­da para cada una.

Ya ten­emos la idea, aho­ra solo ten­emos que hac­er estas pre­gun­tas uti­lizan­do un lengua­je que la com­puta­do­ra entienda.

Uti­lizan­do la sen­ten­cia if, podemos hac­er pre­gun­tas cuya respues­ta es ver­dadero o falso. 

La clase Input de Uni­ty se encar­ga de mane­jar las entradas, así que recur­ri­mos a sus méto­dos para resolver el prob­le­ma. Ten­emos el méto­do GetKey para las teclas y Get­Mouse­But­ton para los botones del mouse, en el argu­men­to de estos méto­dos indicamos la tecla uti­lizan­do el enum Key­Code y el botón del mouse usan­do enteros, como se obser­va en la figu­ra 6.

Solución

Fig. 6: El códi­go fal­tante está completo.

Con esto logramos que la estación de entradas cumpla su función.

proyecto unity3d modelo 3d hecho en blender de las teclas wasd, un mouse y un cartel que dice input station. la tecla w está en color verde
Fig. 7: Estación de entradas. Tecla W pul­sa­da. 
proyecto unity3d modelo 3d hecho en blender de las teclas wasd, un mouse y un cartel que dice input station. la tecla a está en color verde
Fig. 8: Estación de entradas. Tecla A pul­sa­da. 
proyecto unity3d modelo 3d hecho en blender de las teclas wasd, un mouse y un cartel que dice input station. el clic izquierdo está en color verde
Fig. 9: Estación de entradas. Clic izquier­do. 
proyecto unity3d modelo 3d hecho en blender de las teclas wasd, un mouse y un cartel que dice input station. el clic derecho está en color verde
Fig. 10: Estación de entradas. Clic dere­cho. 

Conclusión

Como primera con­clusión me gus­taría men­cionar cómo pasamos de pen­sar el prob­le­ma en lengua­je colo­quial (figu­ra 5), para luego escribir­lo en lengua­je C# (figu­ra 6). Pen­sar los prob­le­mas de esta for­ma resul­ta más sim­ple, porque nos abstrae­mos del lengua­je de pro­gra­mación.
Un paso inter­me­dio entre este lengua­je colo­quial y el códi­go C# sería el pseudocódi­go.

Leer entradas es la for­ma que ten­emos de saber qué quiere hac­er el jugador, así que ten­emos que definir qué entradas vamos a ofre­cer y cuán­do quer­e­mos leer­las (por ejem­p­lo quizás no nos intere­sa leer las entradas WASD cuan­do mostramos una cinemática).

Los even­tos de entra­da son suce­sos aleato­rios, es por eso que debe­mos leer­los de man­era con­tin­ua uti­lizan­do el méto­do Update.

Para evi­tar com­pli­ca­ciones es recomend­able hac­er la lec­tura de las entradas en un solo Script.

Puede haber otro tipo de entradas, como un Joy­Stick o entra­da tác­til. Debe­mos estu­di­ar la clase Input de Uni­ty para enten­der cómo manejarlas.

2 comentarios en “#1 Leer entradas. Métodos de la Clase Input [Serie Fundamental de Unity]”

  1. Muy bien por tu tra­ba­jo y com­par­tir tu saber, sera de util­i­dad para muchos. Feli­ci­dades, sigue asi.

    1. Muchas gra­cias! Estoy ded­i­can­do todo mi tiem­po libre a crear artícu­los y videos que puedan resul­tar útiles 😀

Los comentarios están cerrados.

Scroll al inicio
Secured By miniOrange