Skip to main content

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

Youtube video player

Youtube video player

info

Prueba el demo en tu navegador y descarga el código fuente de todos los tutoriales en GitHub.

En box2D existen 3 tipos de cuerpos: dinámicos (dynamic), estáticos (static) y cinemáticos (kinematic).

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));
warning

Recuerda 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