Ich bin neu das gleiche Problem playn und hatte. Ich cam über diesen Thread während der Suche nach der Antwort. Ich nehme an, dass Sie nach einer 3D Antwort suchen, ich arbeite in 2D. Eine 3D-Lösung könnte ähnlich sein, aber ich weiß nicht, wie die Ebenen in 3D funktionieren, also könnte ich mich irren. Wie auch immer, hier ist was ich gefunden habe.
Das Problem ist, dass Übersetzungen auf den Ebenen alle auf einmal erfolgen. Dies bedeutet, dass jede Drehung um den Ursprung herum erfolgt. Wenn Sie also eine gedrehte Ansicht eines bestimmten Ortes anzeigen möchten, müssen Sie berechnen, was dieser Ort nach der Drehung wäre, und dann die Übersetzung des Layers auf den gedrehten Ort festlegen.
Ich habe dies zu der Erbsen-Demo im Showcase-Projekt hinzugefügt, um es zu testen.
private void setCameraLocation(Vec2 vec, float rot) {
vec = new Vec2(-vec.x/physUnitPerScreenUnit, -vec.y/physUnitPerScreenUnit);
Transform trany = new Transform();
trany.set(new Vec2((PlayN.graphics().width()/2f),(PlayN.graphics().height()/2f)), -rot);
vec = Transform.mul(trany, vec);
worldLayer.setRotation(-rot);
worldLayer.setTranslation(vec.x,vec.y);
}
Wie gesagt ich wahrscheinlich nicht die Antwort für Ihre Suche, aber es kann jemand anders oder zumindest Punkt, den Sie in einer Richtung helfen.