domingo, 25 de julio de 2021

libGDX: Cuerpos dinámicos, estáticos y cinemáticos

En box2D existen 3 tipos de cuerpos: dinámicos (dynamic), estáticos (static) y cinemáticos (kinematic). Antes de comenzar recuerda que puedes descargar el código completo en Github y si lo prefieres puedes ver el video tutorial de este articulo.


También puedes correr la aplicación de este tutorial en tu navegador.

Cuerpos estáticos (static)

Los cuerpos estáticos no reaccionan a ninguna colisión, fuerza o impulso por lo que no se mueven.

Usando el código del ejemplo anterior agregaremos un un cuerpo estático que actuará como el piso, por lo que nuestra pelota al caer no desaparecerá de la pantalla. Creamos una función llamada createFloor():

Como podemos ver, en la definición del cuerpo decimos que es estático:

bd.type = BodyType.StaticBody;

Luego creamos una linea del tamaño del ancho de la pantalla:

EdgeShape shape = new EdgeShape();
shape.set(0, 0, SCREEN_WIDTH, 0);

Al terminar nuestra aplicación se verá así:

Como pueden ver tenemos la misma pelota, pero ahora tenemos una línea verde que no se mueve.

Cuerpos dinámicos (dynamic)

Los cuerpos dinámicos reaccionan a fuerzas, impulsos, colisiones y a otros eventos del mundo. En nuestra aplicación la pelota es un cuerpo dinámico que reacciona a la fuerza de gravedad por lo que es atraída hacia abajo.

Cuerpos cinemáticos (kinematic)

Los cuerpos cinemáticos son muy parecidos a los cuerpos estáticos ya que no reaccionan a las fuerzas por ejemplo en una colisión, pero a diferencia de los estáticos los cinemáticos si se pueden mover. Creamos una función llamada createKinematic()

Ahora en la definición del cuerpo decimos que es un cuerpo cinético

bd.type = BodyType.KinematicBody;

Y la figura que tendra sera de una caja, en este caso un rectángulo

PolygonShape shape = new PolygonShape();
shape.setAsBox(.1f, .25f);

Lo haremos girar en sentido contrario a las manecillas del reloj con la siguiente línea de código

oBody.setAngularVelocity((float) Math.toRadians(360));

Es importante recordar que Box2D trabaja con radianes y no con grados. Nuestra aplicacion se vera asi, donde el cuerpo cinemático es de color azul y se encuentra girando:

Conclusión

En este tutorial aprendimos sobre los diferentes tipos de cuerpos y cómo reaccionan con otros cuerpos. Espero les haya gustado y nos vemos en el próximo tutorial

    

0 comments:

Publicar un comentario

Entradas populares