Programación de Juegos para Android

Programación de Juegos para Android 16: Actores

42 videos

238 minutos

Vamos con la creación del primer actor. En este momento tengo dos imágenes. Faltan por poner algunas, que ya las iremos poniendo. Pero minijoe y pinchos ya tienen imágenes. Podríamos crear un actor llamado minijoe para indicar que es el protagonista, aunque es cierto que vamos a cambiar de texturas y vamos a poner a disposición del usuario más por si no le gusta ésta, pero por empezar por algo simple vamos a empezar hablando de Minijoe,

y vamos a crear un actor que represente nuestro protagonista, así que lo voy a hacer es crear un paquete… uy, esto no es un paquete, perdón. Esto es un paquete. Se parecen los iconos. De hecho lo voy a crear aquí, como subcarpeta o subpaquete, para guardar los actores. Y ahora sí, voy a crear una clase llamada ActorJugador para indicar que es la clase que representa mi personaje. Los actores en Scene2D tienen una particularidad, y es que deben extender a una

clase llamada Actor. Evidentemente tenemos que importar la clase buena, tiene que ser la clase que empieza por com.badlogic.gdx. El caso es que en libGDX los actores se agregan a la pantalla, al Stage. Por ejemplo dentro del Stage llamo al método addActor, y con esto agrego un actor. Todos los actores incluyen su propio comportamiento y son independientes los unos de los otros. Esto es muy ventajoso porque nosotros agregamos al escenario todos los actores que

nos interesan, y luego en el actor podemos definir el comportamiento por separado. Cuando en render() pedimos que se haga una llamada a act() o a draw(), lo que hace el Stage es que, respectivamente, pide a todos los actores que se actualicen o se dibujen. Por lo tanto, Actor nos va a proporcionar dos métodos elementales: uno es act(), y el otro es draw(). El primero de ellos, act(), se va a invocar cuando llamemos a act(). Scene2D llama a todos los actores

y les pide que se actualicen. Uno de los parámetros es el delta, que funciona igual que el delta de render(), de modo que si mi actor debe actualizarse conforme va pasando el tiempo pueda hacerlo. Y el otro es draw(), que tiene dos parámetros: uno es el SpriteBatch que tenga asociado Scene2D al stage, que como veis es de tipo Batch, es la clase padre de SpriteBatch, pero se deja dibujar. El otro es un parámetro llamado parentAlpha que representa

las alfas o las opacidades. Tendrá que ver cuando trabajamos con grupos para que si hacemos que en un grupo tenga que hacerse transparente algo, todos los actores se hagan transparentes a la vez. Los grupos hacen muy fácil trabajar con ciertas operaciones. Por ahora vamos a ver cómo podríamos dibujar nuestro jugador. Antes de centrarnos en el tema de dibujar vamos a ver cómo se instanciaría este actor. Instanciar un actor no es muy difícil.

Creo su instancia como jugador, y luego le digo que es un nuevo ActorJugador, y llamo al método que os he presentado de addActor() para agregar el jugador a mi Stage. La ventaja de trabajar con actores también es que Scene2D se ocupa de trabajar con todo lo que sea posiciones, tamaños, porque evidentemente los actores deben estar posicionados, en alguna parte deben estar. La clase Actor lo que tiene es un montón de métodos como setBounds,

para establecer sus dimensiones o setColor, para colorearlo. O setX, setY para decir dónde deben colocarse; setWith para indicar el ancho del objeto; setHeight, para cambiar el alto; setPosition, setRotation para la rotación; setScale… os hacéis a la idea que tenemos un montón de métodos. setTouchable, el cual usaremos durante la entrada para comprobar cuando podemos hacer clic en las cosas tocándolas con el dedo para que se disparen los eventos

de una forma casi mágica. Podríamos utilizar estos métodos para definir la posición del jugador. Por ejemplo, jugador.setPosition(20, 100). Lo que quiero es que aparezca ya para que luego cuando ponga el suelo parezca que el suelo está ahí. Como no sé cómo de alta es la pantalla del móvil por ahora trabajo con una pantalla de 640x480. En este caso 100 nos asegura que no está abajo del todo, ni arriba del todo, pero va a tener un espacio que

dejará para ver el mundo. 20 se lo pongo en la X porque lo que quiero es que esté colocado en la izquierda: el personaje va a avanzar y quiero que tenga toda la pantalla por la parte de la derecha para prevenir cuándo vienen los pinchos o cuándo es momento de echar a volar para reaccionar, porque si no no. Pero esto no hace nada porque el actor está vacío. Vamos a ver cómo hacer para que el actor haga algo realmente.

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!!!!!