Programación de Juegos para Android

Programación de Juegos para Android 23: Fixture y FixtureDef

42 videos

238 minutos

Para crear esa Fixture, tendremos que utilizar lo siguiente. Al igual que hemos creado el Body a partir de World, para crear la Fixture lo tenemos que hacer a partir del Body. Tenemos un método llamado createFixture para crear una fixture, y aquí hay dos opciones: o usar FixtureDef, o usar Shape, y Density. Os digo una cosa, realmente son iguales. FixtureDef tiene muchos datos acerca de la Fixture, como qué forma tiene, cuál es su tamaño, cuál es su densidad…

muchas propiedades. Podemos hacerlo así, o podemos directamente pasarle la Shape, la forma que queramos que tenga, como forma Rectangular, o forma Circular. O quiero darle incluso los píxeles que debe tener, o los vértices que debe tener. Y pasarle también la densidad. Francamente, ya que sólo queremos crear una caja, voy a pasarle un Shape. Va a ser una caja rectangular, la cual podemos definir con PolygonShape para indicar que debe tener una forma poligonal.

Si creásemos un círculo, Polygon no serviría, porque los circulos son especiales, necesitan su propio CircleShape. Pero un polígono es suficiente aquí. Y ahora le tengo que decir las dimensiones que queremos que tenga la forma. Por ejemplo, setAsBox. Aquí le decimos el ancho y alto que queremos que tenga el minijoe. Ahora diréis: “vale, pues si quiero que ocupe 80 píxeles de ancho y alto, le pasaré un 80, 80”. ¡Error! ¿Por qué? Porque Box2D funciona en metros. ¡No podéis

pedirle que os cree un body de 80 metros de altura! ¡Es más alto que algunos edificios de viviendas! ¡No tiene lógica, crearíamos a Godzilla! Box2D trabaja en metros así que necesitamos algo más realista. Ya no sólo porque no es realista tener un cuerpo de 80 metros: las físicas se van a romper con objetos muy altos. ¿Cuánto puede medir Minijoe? No lo sé, la verdad, porque no existe en la vida real. Pero voy a darle una dimensión de 1 metro.

Una señora caja, no está mal. Diréis que es pequeño, pero tranquilos, porque luego lo podremos escalar. Sed realistas. Os lo repito porque es un error que comete mucha gente al principio, intentar crear cuerpos de 300 píxeles de altura, olvidando que no son píxeles sino metros, y crear un cuerpo de 300 metros de altura es ilógico. Cuando tengamos la Shape creada, creamos la Fixture usando el Body para tal propósito, con Fixture la Shape y una densidad como por ejemplo 1,

porque no hace falta decir nada más. Hecho esto, eso sí, tenemos que hacer un dispose(). Y, no tenemos que conservar la Shape más adelante porque ya la hemos usada, así que aquí mismo en el show() le hago un dispose(), y ya está. Con esto tenemos creado el cuerpo. Vamos a ver el Fixture en acción y el Body en acción. Qué emoción, ¿no? ¡Qué pequeño! Si no se le ve. Vale, ¿por qué? Porque estamos creando una cámara que tiene 640 píxeles por 480 píxeles

de alto. O 640x360. No recuerdo las cifras, pero son muchísimos píxeles. Y el cuerpo es muy pequeño ahora, así que no podemos pasarle a la cámara unas dimensiones tan grandes. Tenemos que pasarle algo más pequeño.

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