Programación de Juegos para Android

Programación de Juegos para Android 26: Fixtures Personalizados

42 videos

238 minutos

Ya hemos visto cómo crear un Minijoe, cómo crear un suelo, y alguno estará pensando si vamos a empezar a juntar ya Box2D con Scene2D. Pero no, porque hay una cosa que os debo enseñar, y es que a veces no es tan fácil crear Fixtures. Me explico: hasta ahora hemos creado cajas, y eso es fácil de crear. Pero, ¿cómo hacemos si lo que queremos crear no tiene forma de caja, como un triángulo? Vamos a ver cómo crear un pincho para que veáis que no debe ser tan fácil,

pero que puede serlo si lo hacemos bien. Vamos a crear un PinchoBody y un PinchoFixture. Luego tendremos varios pinchos, así que esta variable no se nos hará útil salvo que lo metamos en una lista, para guardar todos los pinchos. Pero por ahora usaremos sólo uno. De hecho lo haremos como hemos hecho los cuerpos hasta ahora. Creamos un cuerpo. Creamos la función. Inicialmente la podemos pasar como cualquier otra. Le vamos a dar al pincho un tamaño

de 1 metro x 1 metro. Pero en cuanto a la posición, si bien como altura le paso 0.5 para centrarla, de ancho lo voy a dejar en función de un parámetro llamado X para poder usarlo y crear tantos pinchos como necesite. Ahora lo que voy a hacer es definir una función a la que le pase el Body, como createPinchoFixture, y a partir del PinchoBody se devuelva la fixture a usar. Es aquí donde empiezan los problemas, porque no hay ningún TriangleShape. Ni PolygonShape sirve para

este propósito, no hay un setTriangle, ni nada de eso. Tenemos que utilizar vértices. Y alguno dirá… ¡oh no! Tranquilos, no pasa nada, es sencillo. Os lo cuento. Hasta ahora hemos creado un pincho, al que le hemos dado una posición, conociendo únicamente el centro. Le quiero dar forma de triángulo. Como… así. Queremos, básicamente, que tenga 1 metro de alto, 1 metro de ancho, sabiendo que esto está colocado en el punto (x, 0.5). De modo que esto sea 1,

esto sea 0.5, y esto sea 0. Y a la vez esto sea x+0.5, esto sea x, y esto sea x-0.5. ¿Qué le debo decir a Box2D para que cree este triángulo? Pues le debo dar la posición de este vértice, la de este, y la de este. El órden es importante porque los vértices se definen en el sentido contrario a las agujas del reloj. Le diré que la fixture tiene un vértice aquí, otro aquí y otro aquí. En Box2D, esto lo hago desde shape, que tiene un método llamado set, que recibe un array de

vértices en forma de Vector2[]. Debo crear el array de vértices, y asociarlo al PolygonShape. Creo un vector de Vector2, que tenga vértices. Y creo un array de tamaño 3 porque tiene 3 vértices. Aviso importante: por motivos extraños, en Box2D un cuerpo sólo puede tener 8 vértices como mucho. Si queréis subir el número de vértices tenéis que hacer chapuzas, así que como mucho 8. Para definir los vértices, primero definimos el primer vértice, que será éste. Tenemos que usar

coordenadas locales al centro, así que le diré que quiero un vértice en la posición (-0.5, -0.5), porque está 0.5 a la izquierda del centro y 0.5 abajo del centro. El segundo vértice es igual, sólo que con la x en +0.5, y el tercer vértice está en la misma x, pero con la Y en +0.5 m de alto. Y ya está realmente. Ahora llamo a set(vertices). Creo el Fixture a partir de la shape, hago el dispose, y devuelvo la fixture. Y ya está. Yo creo mi pinchoFixture

a partir del pinchoBody, y para que compile le debo dar una posición, como por ejemplo 1. Finalmente, antes de que no se me olvide una vez más, debo pedir que pinchoBody destruya la fixture, y world debe destruir el body. Cuando yo lo ejecute, lo que ocurrirá es que veremos el triangulito ahí. De hecho, para daros una alegría os voy a enseñar lo que ocurre si pongo 0.5 aquí, para que veáis lo bonito que es esto de las físicas. [Tose] Perdón. Veis qué gracia.

Esto es lo que mola de las físicas, que son muy realistas, no es sólo un bounding box, es más realista. Los pinchos los pondremos donde nos interese, como más a la derecha. El objetivo será que la caja la salte. Así que esto cada vez tiene mejor aspecto. Ahora vamos a ver cómo podemos hacer lo de los saltos y las colisiones.

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