2016-10-15 3 views
1

Allerdings möchte ich auch die Rotationen des Sprites reflektieren die Rotationen der b2bodies. Aber nachdem ich die Sprites gedreht habe, ist der Offset, den ich verwende, um sie korrekt mit den b2body-Positionen zu zentrieren, nicht mehr genau.Box2D C++ drehen um Punkt

void CRoom::RotateGun(const SDL_Event &event) 
{ 
    glm::vec2 mousePosition = sdl::GetMousePosition(event.motion); 
    glm::vec2 delta = mousePosition - GUN_POSITION; 
    float angle = atan2f(delta.y, delta.x); 
    m_gun->GetBody()->SetTransform(m_gun->GetPosition(), angle); 
} 

image1

Antwort

1

Verwenden multiplizieren die Matrix.

die normalen Konventionen, die Transformation ist

move(-width/2, -height/2) * rotate(angle) * move(width/2 height/2) *move(x, y) 

Manchmal werden Sie die Reihenfolge umkehren müssen.