Box 2D Set Origin


8

Estoy tratando de establecer el origen de una forma box2d. Por defecto, una forma gira alrededor del centro. Pero estoy tratando de hacer que gire alrededor de la izquierda de la forma. Como un reloj por ejemplo.

He oído hablar de cosas como SetXForm pero esa función ni siquiera parece existir. Estoy usando C ++ por si necesita saber eso.

Gracias de antemano, cualquier ayuda es apreciada.

2d  physics  box2d 

Respuestas:


6

Hay dos tipos de formas y tres formas de hacerlas en Box2D.

Un b2CircleShape siempre tiene su centro en el centro del círculo. Si desea hacer un "círculo asimétrico", debe fijar el círculo a otro objeto (por ejemplo, un círculo pequeño dentro de él) con una articulación.

Un b2PolygonShape se puede inicializar con SetAsBox. SetAsBox por defecto coloca el origen en el medio del rectángulo, pero puede pasar un b2Vec2 como el tercer argumento para colocar el origen en otro lugar.

Una b2PolygonShape que no es una caja se inicializa con el origen en las coordenadas locales 0,0. Para hacer una forma que se extienda solo en una dirección, por ejemplo, hacia la derecha y hacia arriba, simplemente especifique coordenadas como (0, 0), (0, 5), (5, 5), (5, 0), construyendo la forma solo a lo largo de coordenadas locales que se mueven hacia arriba y hacia la derecha (y en orden de bobinado CCW).

Recuerde, el origen de la forma siempre es una coordenada local (0, 0). Si intentas pensar en ello como "mover el origen", solo te vas a confundir: lo que estás haciendo es compensar los otros vértices en relación con el origen.


2

No importa, busco la respuesta. Aparentemente en b2PolygonShape, cuando llamas a la función

SetAsBox ()

Hay 2 sobrecargas. Y uno de ellos es:

SetAsBox (medio ancho, media altura, centro, ángulo);

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.