के साथ ज़ूमिंग और स्वाइपिंग मैं आईओएस के लिए 2 डी पहेली बना रहा हूं और वर्तमान में मैं ज़ूमिंग और यूआईपीआईएनजीजेस्टर रिकॉग्नाइज़र के साथ स्क्रॉलिंग करने की कोशिश कर रहा हूं।ओपनजीएल ES
ज़ूमिंग इस तरह से किया जाता है: मेरे पास एक लक्ष्य 2 डी वेक्टर है जो "ज़ूमिंग पॉइंट" है। कोड है:
glTranslatef(target.x, target.y, 0);
glScalef(scale, scale, 0);
glTranslatef(-target.x, -target.y, 0);
लक्ष्य इस तरह से इशारा पहचानकर्ता के साथ चयनित किया जा रहा है:
-(void)handlePinchGesture:(UIPinchGestureRecognizer*)recognizer
{
if (UIGestureRecognizerStateBegan == [recognizer state])
{
view->setTarget([recognizer locationInView:self]);
}
// Rest of the code omitted
}
सब कुछ बस ठीक काम करता है।
प्रारंभ में गेम आईपीएडी के लिए डिज़ाइन किया गया था, लेकिन मैं इसे आईफोन और आईपीओडी पर भी काम करना चाहता हूं। लेकिन आईफोन और आईपीओडी में अलग-अलग पहलू अनुपात हैं। शुरुआती तस्वीर अनुपात रखने के लिए मैंने शुरुआती वाई स्केल को थोड़ा बड़ा बनाने का फैसला किया। इसके अलावा प्रारंभिक ज़ूम कारक के साथ गेम फ़ील्ड को ऊपर और नीचे स्वाइप करना संभव हो गया। कोड है:
glTranslatef(target.x, target.y, 0);
glScalef(scale, scale * aspectRatio, 0);
glTranslatef(-target.x, -target.y, 0);
यह सिर्फ ठीक काम करता है अगर खेल क्षेत्र स्क्रीन पर "केंद्रित" है (उदाहरण, जब वहाँ ऊपर और नीचे बॉट कड़ी चोट दिशाओं में बराबर अंतरिक्ष हैं()।)। लेकिन अगर हम मैदान को ऊपर या नीचे स्वाइप करते हैं और चुटकी इशारा शुरू करते हैं, तो खेल का मैदान फिर से केंद्र में कूद जाता है।
मुझे समझ में आता है कि मुझे कुछ ऑफसेट द्वारा इशारा स्थिति का अनुवाद करने की आवश्यकता है, लेकिन मैं यह नहीं समझ सकता कि वास्तव में 3 दिनों के लिए कैसे।
मुझे आपके ज़ूमिंग और चलने वाले कोड को बिल्कुल ठीक नहीं मिला, लेकिन ऐसा लगता है कि आप इस कदम के बाद अपने दृश्य की नई स्थिति को ध्यान में रखते हुए और ज़ूम केंद्र के रूप में पुरानी स्थिति के साथ ज़ूम करते हैं। आपको याद रखना होगा कि वर्तमान में आपका दृश्य किस स्थिति में है और संक्षिप्त स्केलिंग और अनुवाद। –
मैं दृश्य स्थिति को संभाल नहीं पाता हूं - केवल स्केल "लक्ष्य", जो स्क्रीन पर कहीं भी हो सकता है और इस पर भरोसा नहीं किया जा सकता है :( – riens
इसके बजाय फ़ंक्शन "glOrthof" को ढूंढें और फिर से पुन: व्यवस्थित करें, फिर कुछ पहलू अनुपात के साथ स्केल करें .. –