jueves, 20 de febrero de 2014

5.- Tipos de cuerpos: Dinámicos, estáticos y cinematicos

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.


1.- Para nuestro ejemplo anterior agregaremos un cuerpo estático que actuará como el piso, por lo que nuestra pelota al caer no desaparecera de la pantalla. Creamos una funcion llamada crearPiso():


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_ANCHO, 0);

Al terminar nuestra aplicacion se vera asi:



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 si reaccionan a fuerzas, impulsos, colisiones y a otros eventos del mundo. En nuestra aplicacion 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. 

1.- Creamos una funcion llamada crearKinematic()


Ahora en la definicion del cuerpo decimos que es un cuerpo cinematico

                         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 linea de codigo

                      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.




Poniendo todo junto

Todo nuestro codigo se veria asi:


Y aqui les dejo la aplicacion funcionando ( si no se puede ver, recomiendo que utilizar google chrome).

Hice una pequeña modificación para cuando toquen la pantalla la pelota caiga nuevamente desde arriba. 








No hay comentarios.:

Publicar un comentario