ऑब्जेक्ट का अनुवाद करना सबसे आसान तरीका है ताकि 0,0 बिंदु केंद्र हो, इसे घुमाएं, फिर इसे स्थिति में वापस अनुवाद करें। मैं libGDX से परिचित नहीं हूं, लेकिन तीन परिवर्तनों को एकत्रित करने के लिए एक विधि होनी चाहिए, जिसका अर्थ है कि आप केवल अपने ऑब्जेक्ट में एक समेकित परिवर्तन लागू करते हैं। ध्यान में रखें कि आप परिवर्तन को जोड़ते हैं, एक फर्क पड़ता है।
एक और अधिक जटिल तरीका जो वास्तव में एक ही परिणाम देता है, घुमाव द्वारा बनाए गए ऑफसेट की मात्रा की गणना करना और छवि को मूल रूप से वापस अनुवाद करना शामिल है। इस तरह से मत करो। तीन सरल परिवर्तनों का संयोजन करना रास्ता है और परिवर्तनों का उपयोग करने के सर्वोत्तम कारणों में से एक है।
** संपादित करें API पर देखकर अभिनेता ऑब्जेक्ट में अनुवाद() विधि है। अपनी छवि को स्थानांतरित करने के लिए इसका उपयोग करें ताकि 0,0 बिंदु केंद्र में हो। Psuedocode में;
x = this.getX();
y = this.getY();
cx = this.getWidth() * .5;
cy = this.getHeight() * .5;
this.translate(-(x+cx), -(y+cy)); // move so 0,0 is the centre of the Actor object
this.rotate(thisMuch); // rotate the Actor
this.translate((x+cx), (y+cy)); // move it back to its original location
इसके परिणामस्वरूप आपकी वस्तु स्पॉट पर अपने केंद्र बिंदु पर घूमती है। यह दृढ़ दिखता है, लेकिन अभ्यास में यह बहुत ही कुशल है, इसलिए यदि आप मैट्रिस (ट्रांसफॉर्म) के साथ सीधे काम करने में सक्षम हैं जो इन तरीकों को चलाएंगे।
स्रोत
2012-12-17 20:49:07
यह सबसे आसान समाधान था। मैं सिर्फ रोल_onto_स्क्रीन() विधि में अभिनेता के अंदर मूल स्थापित कर रहा हूं। धन्यवाद दोस्तों! –
क्या होगा यदि मुझे लगातार अभिनेता या समूह को घुमाएं? – ManishSB
आप बस घुमाए गए क्रिया को दोहराए गए क्रिया में लपेटें, और दोहराना एक्शन को एक्टर्स एक्शन के रूप में सेट करें। – Kedu