2012-12-30 17 views
7

अपने केंद्र के चारों ओर आयताकार घुमाने के लिए कैसे? मैं ShapeRenderer में घुमाने के समारोह पाया:libgdx shaperenderer अपने केंद्र के चारों ओर आयताकार घुमाने के लिए कैसे?

void rotate(float axisX, float axisY, float axisZ, float angle); 

लेकिन यह चारों ओर घूमता है 0,0 समन्वय, और मैं इसके केंद्र के चारों ओर आकार घूर्णन चाहते हैं।

उत्तर

10

यदि आप ShapeRenderer के लिए documentation पर देखते हैं तो दूसरा उदाहरण आपको दिखाता है कि बॉक्स के केंद्र को {20, 12, 2} स्थिति में कैसे सेट करें और अनुवाद का उपयोग करके ज़ेड-अक्ष के चारों ओर घुमाएं। आपको वही काम करने की ज़रूरत है उदा।

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(); 

आशा इस मदद करता है।

+0

धन्यवाद thats मदद करता है (x और y आयत के केंद्र में है)। – JustOneMan

+0

यह मेरे लिए काम नहीं कर रहा है। अगर मैं अनुवाद नहीं करता, तो मेरा आयताकार प्रदर्शित होता है लेकिन तेजी से चमक रहा है। अगर मैं इसका अनुवाद करता हूं, तो आयत अब दिखाई नहीं दे रहा है? क्या आप एक समाधान जानते हैं? – WeirdElfB0y

3

उपयोग इस विधि (official docs):

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

x/y विमान ShapeRenderer.ShapeType.Line या ShapeRenderer.ShapeType.Filled का उपयोग करने में एक आयत खींचता। एक्स और वाई निचले बाएं कोने को निर्दिष्ट करते हैं। OriginX और मूल रूप से उस बिंदु को निर्दिष्ट करें जिसके बारे में आयत घूमना है।

इस तरह यह प्रयोग करें:

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

यह बहुत अच्छा काम करता है। बस सुनिश्चित करें कि origX और origy आयताकार के निचले बाएं से संबंधित हैं, न कि विश्व की जगह ... जैसा कि मैंने अंततः पता लगाया ... – NielW

+0

यह एक अच्छा बिंदु है – rluks

संबंधित मुद्दे