Box 2D Set Origin


8

Sto cercando di impostare l'origine di una forma box2d. Per impostazione predefinita, una forma ruota attorno al centro. Ma sto cercando di farlo ruotare attorno alla sinistra della forma. Come un orologio per esempio.

Ho sentito parlare di cose come SetXForm ma quella funzione non sembra nemmeno esistere. Sto usando C ++ nel caso in cui fosse necessario saperlo.

Grazie in anticipo, ogni aiuto è apprezzato.

2d  physics  box2d 

Risposte:


6

Esistono due tipi di forme e tre modi per realizzarle in Box2D.

Una b2CircleShape ha sempre il suo centro al centro del cerchio. Se si desidera creare un "cerchio sbilenco", è necessario fissare il cerchio a un altro oggetto (ad esempio un piccolo cerchio al suo interno) con una giuntura.

Una b2PolygonShape può essere inizializzata con SetAsBox. SetAsBox per impostazione predefinita posiziona l'origine nel mezzo del rettangolo, ma è possibile passare un b2Vec2 come terzo argomento per posizionare l'origine altrove.

Un b2PolygonShape non-box viene inizializzato con l'origine alle coordinate locali 0,0. Per creare una forma che si estende solo in una direzione, ad es. Destra e su, è sufficiente specificare coordinate come (0, 0), (0, 5), (5, 5), (5, 0), costruendo la forma solo lungo le coordinate locali che si muovono verso l'alto e a destra (e in ordine di avvolgimento in senso antiorario).

Ricorda, l'origine della forma è sempre la coordinata locale (0, 0). Se provi a considerarlo come "spostare l'origine", ti confonderai e ciò che stai facendo è compensare gli altri vertici rispetto all'origine.


2

Poco male, ho trovato la risposta. Apparentemente in b2PolygonShape, quando si chiama la funzione

SetAsBox ()

Ci sono 2 sovraccarichi. E uno di questi è:

SetAsBox (metà larghezza, metà altezza, centro, angolo);

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.