Programación de Juegos para Android

Programación de Juegos para Android 10: Detectar Entrada

42 videos

238 minutos

Estamos de vuelta con el código una vez más. He hecho limpieza, y he quitado bastantes cosas, como las imágenes, porque me voy a centrar en otro aspecto importante que es la entrada, porque de nada te sirve un juego si no puede ser controlado por el jugador. Como mínimo que se pueda tocar con el móvil o en escritorio que se pueda tocar alguna tecla del teclado o usar el ratón. Como estamos centrados en Android, voy a darle más prioridad a lo que sea

trabajar con Android, y en Android el dispositivo principal va a ser el dedo, que nos va a permitir tocar la pantalla táctil. Existen más formas de controlar un juego en Android. Tenemos las teclas físicas si el móvil tiene teclas físicas; o las teclas de volumen, o algunos móviles especiales tienen un teclado físico que puede controlarse con teclado, pero principalmente vamos a centrarnos en dedos. Tenemos dos formas de trabajar con entrada. libGDX en su famosa clase Gdx

tiene un complejo sistema de entrada: input, mediante el cual podemos trabajar con distintas cosas de la entrada. Por ejemplo, comprobar si la pantalla está siendo tocada o si acaba de ser tocada. Si hemos tocado el acelerómetro, cómo de girado está el teléfono, la rotación, dónde está el ratón… un montón de cosas, incluso hacer vibrar el teléfono, simplemente a través de Input. Evidentemente si intentamos hacer vibrar el ordenador

no va a conseguir que haga nada. Pero es un ejemplo de que input nos deja hacer todo tipo de cosas. Y me voy a centrar en tocar la pantalla. Como las pruebas las podemos hacer en un ordenador, en un PC en vez de dedo tenemos un ratón, pero es exactamente igual. Por ejemplo, podemos comprobar si la pantalla está siendo tocada con isTouched(). Devuelve verdadero si la pantalla está siendo pulsada. Puedo hacer que si está pulsando la pantalla imprima el mensaje

“estás tocando la pantalla”. Cuando ejecuto esto, si toco la pantalla en este momento la terminal se llena de mensajes que dice que estoy tocando la pantalla. ¿Por qué tantos? Porque como os dije al principio de los tiempos, render se ejecuta 60 veces por segundo, así que es normal que se imprima tantas veces porque hace la comprobación un montón de veces. Pero por ejemplo, en vez de isTouched() podemos preguntarnos si acaba de ser tocada, con justTouched().

Esto te devuelve verdadero una vez, pero hasta que no vuelvas a tocar la pantalla no vuelve a devolver verdadero. Es mucho más conveniente si queremos detectar si ha tocado la pantalla cuando queramos hacer el salto. Si ha tocado la pantalla se imprime. Pero no lo imprime un montón de veces, sólo una vez. Si levanto el dedo del ratón y lo vuelvo a pulsar vuelve a aparecer. Pero no un montón de veces. Ahora si porque lo estoy pulsando yo. Por completar esto,

aunque no me interesa centrarme en escritorio, evidentemente si tenemos un teclado físico en el teléfono o estamos en escritorio tenemos el método isKeyPressed() para ver si hemos pulsado una tecla. Aquí debemos usar como parámetro la tecla que queremos comprobar si está pulsada. Estas teclas se guardan en una clase especial, Input.Keys, con todas las teclas que hay en la clase Keys. No sólo hay teclas de PC. Además de las teclas de PC

tenemos la tecla atrás de un móvil, o la tecla HOME, o las teclas de volumen… algunas teclas un poco curiosas como las multimedia, o las tecla L1, L2, R1, R2… no hay soporte oficial para Play Station, así que no sé para qué están… a lo mejor para la consola que tiene Sony, la PSP con Android, que no me acuerdo del nombre. Imagino que para eso existe, pero es curioso en general la cantidad de cosas que podemos hacer con teclas.

Aun así todos se caracterizan porque, como hacemos la comprobación en el if(), siempre, aunque no hagamos nada, abramos el juego y lo dejemos quieto, siempre se está ejecutando el IF y se están usando recursos en comprobar si se está pulsando la pantalla. Que vale, no se está pulsando, pero hay que hacer el IF. Entonces, libGDX más allá del Input lo que tiene es una alternativa mejor para comprobar si se está tocando la pantalla

o si se está pulsando una tecla, que es utilizar los procesadores, que es un sistema asíncrono y bastante más funcional que hacer preguntas.

Si quieres enterarte de los nuevos cursos, suscríbete. No habrá spam, prometido :)

Sobre el autor

foto de jotajotavm
José Javier Villena

jotajota pa los amigos y jota pa los de más cnfianza.

Bio Seria: Analista-Programador en diferentes lenguajes. Tutor PREMIUM de reconocidas plataformas de nivel mundial como CodigoFacilito. Redactor de artículos para Cristalab. Mi canal de YouTube está patrocinado por la editorial ANAYA y LaTostadora. Me gusta explicar con detalle y poner varios ejemplos para que no queden dudas.

Bio Molona: Me presento :) soy informatico, ni frostis d hardware pero muy muxo de programacion, friki a medias o del to segun el dia. Me gusta programar, muxo. Manejo varios lenguajes y tdo lo ke sepa lo comparto x amor al arte. Este no es mi trabjo pero lo ago mejor y con +ganas y calidad que si lo fuera, x eso mismo, xq para mi es divertido. Solo spero al menos algo de agradecimientO!! ;)

Dios, qe gusto haber escrito este parrafo cm me a dao la gana sin pensar en ortografia ni tildes ni historias!!!!!