2012-12-30 4 views

Odpowiedz

10

Jeśli spojrzeć na documentation dla ShapeRenderer, drugi przykład pokazuje, jak ustawić środek pudełka w pozycji {20, 12, 2} i obracać wokół osi Z za pomocą translate. Musisz zrobić to samo, np.

this.m_ShapeRenderer.begin(ShapeType.Rectangle); 
this.m_ShapeRenderer.setColor(1.f, 1.f, 1.f, 1.f); 
this.m_ShapeRenderer.identity(); 
this.m_ShapeRenderer.translate(20.f, 10.f, 0.f); 
this.m_ShapeRenderer.rotate(0.f, 0.f, 1.f, 45.f); 
this.m_ShapeRenderer.rect(x, y, 40.f, 20.f); 
this.m_ShapeRenderer.end(); 

Mam nadzieję, że to pomoże.

+0

Dzięki ów pomaga. – JustOneMan

+0

To nie działa dla mnie. Jeśli się nie tłumaczę, wyświetlany jest mój prostokąt, ale szybko miga. Jeśli to przetłumaczyć, prostokąt nie jest już widoczny? Czy znasz rozwiązanie? – WeirdElfB0y

3

Zastosowanie tej metody (official docs)

public void rect(float x, float y, 
       float originX, float originY, 
       float width, float height, 
       float scaleX, float scaleY, 
       float degrees) 

Rysuje prostokąta w płaszczyźnie x/y stosując ShapeRenderer.ShapeType.Line lub ShapeRenderer.ShapeType.Filled. X i y określają lewy dolny róg. Argumenty originX i originY określają punkt, w którym należy obrócić prostokąt.

pomocą tak: (x i y jest punkt w środku prostokąta)

renderer.rect(x-width/2, y-height/2, 
       width/2, height/2, 
       width, height, 
       1.0f, 1.0f, 
       myRotation); 
+2

Działa to świetnie. Po prostu upewnij się, że originX i originY są względne w stosunku do lewego dolnego rogu prostokąta, a nie przestrzeń światowa ... ponieważ w końcu zrozumiałem ... – NielW

+0

To jest dobry punkt – rluks