libgdx
कई प्रस्तावों का समर्थन
खोज…
व्यूपोर्ट
कई प्रस्तावों और पहलू अनुपात का समर्थन करने के लिए Libgdx तथाकथित Viewports
का उपयोग करता है।
कुछ प्रकार के Viewports
जो विभिन्न प्रस्तावों और पहलू अनुपात को संभालने के लिए विभिन्न रणनीतियों का उपयोग करते हैं।
एक Viewport
हुड के नीचे एक Camera
का उपयोग करता है और यह viewportHeight
और viewportWidth
का प्रबंधन करता है। आप वैकल्पिक रूप से Viewport
को इसमें निर्माता के रूप में Camera
दे सकते हैं, अन्यथा यह डिफ़ॉल्ट रूप से एक OrthographicCamera
उपयोग करेगा:
private Viewport viewport;
private Camera camera;
public void create() {
camera = new PerspectiveCamera();
viewport = new FitViewport(8f, 4.8f, camera);
}
इसके अतिरिक्त, आपको worldWidth
और worldHeight
को व्यूपोर्ट के कंस्ट्रक्टर को निर्दिष्ट करना होगा। यह स्थान उस वर्चुअल कोऑर्डिनेट सिस्टम का प्रतिनिधित्व करेगा, जिसका उपयोग आप ऑब्जेक्ट की स्थिति को निर्दिष्ट करने के लिए उपयोग करेंगे और आकार लेंगे। व्यूपोर्ट परिवर्तन, जिसे स्प्राइटबैच पर लागू किया जा सकता है, उदाहरण के लिए, स्वचालित रूप से तार्किक निर्देशांक को वास्तविक स्क्रीन निर्देशांक में बदलने का ख्याल रखेगा, इस तरह के साथ जो वास्तविक प्रकार के व्यूपोर्ट के अनुरूप है। उदाहरण के लिए, ऑर्थोग्राफ़िक प्रोजेक्शन ( OrthographicCamera
, जो कि डिफ़ॉल्ट है) का उपयोग करते समय: यदि आपकी दुनिया का आकार 7.8 मीटर से 12.8 है और आपकी डिवाइस स्क्रीन 2560x1560 पिक्सल है, तो आपकी दुनिया 200 मीटर प्रति घंटे के साथ गतिशील रूप से अनुमानित होगी।
जब Viewport
आकार बदलता है (उदाहरण के लिए यदि स्मार्टफोन का स्क्रीन ओरिएंटेशन बदल रहा है), तो आपको Viewport
को उस परिवर्तन के बारे में सूचित करना होगा। यह तब Camera
s viewportHeight
और viewportWidth
स्वचालित रूप से अपडेट करेगा:
public void resize(int width, int height) {
viewport.update(width, height);
}
Viewport
भी प्रबंधन एस OpenGL Viewport
और आवश्यकतानुसार drawable क्षेत्र को संशोधित।
Viewport
एस स्क्रीन-निर्देशांक को गेम-निर्देशांक में परिवर्तित करने के बारे में भी ध्यान रखता है, जिसे विशेष रूप से चुनने के लिए आवश्यक है:
private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
worldPos.set(x, y);
viewport.unproject(worldPos);
processPicking(worldPos);
}
बिलिन व्यूपोर्ट
बिलियन व्यूपोर्ट के एक जोड़े हैं, कि प्रत्येक अलग-अलग चीजें करते हैं। यहाँ नामों की एक सूची है, और उनके विवरण:
व्यूपोर्ट नाम | विवरण |
---|---|
StretchViewport | स्क्रीन को स्ट्रेच करेगा। कोई काली पट्टी नहीं, लेकिन पहलू अनुपात बंद हो सकता है। |
FitViewport | पहलू अनुपात के आधार पर इसका आकार अधिकतम होगा। काली पट्टी बांध सकते थे। |
FillViewport | एक FitVieport के समान है, लेकिन हमेशा पूरी स्क्रीन भरता है। |
ScreenViewport | हमेशा पूरी स्क्रीन भरता है, लेकिन किसी भी बच्चे का आकार नहीं बदलता है। |
ExtendedViewport | दुनिया को एक दिशा में विस्तारित करके काली पट्टी के बिना विश्व पहलू अनुपात रखता है |
CustomViewport | एक कस्टम प्रोग्राम व्यूपोर्ट। काली पट्टी हो सकती है, और पहलू अनुपात रख सकते हैं। |
कस्टम व्यूपोर्ट
आप अपना स्वयं का कस्टम व्यूपोर्ट बना सकते हैं। आपके पास काली पट्टी हो सकती है, और आप इसे कैसे प्रोग्राम करते हैं, उसके आधार पर यह पहलू अनुपात रख सकता है या नहीं भी रख सकता है। एक कस्टम व्यूपोर्ट कुछ इस तरह दिखाई देगा:
public class Tutorial extends Viewport
। आपको update(width, height)
को ओवरराइड करने की आवश्यकता होगी, लेकिन यह है।
एक और प्रयास सामान्य स्केलिंग ScalingViewport
का विस्तार करने के लिए किया जाएगा, और एक और स्केलिंग की आपूर्ति की जाएगी जो पहले से ही आपूर्ति नहीं है। मान लीजिए कि आपने इसे Scaling.none
सेट किया है। यह कुछ इस तरह दिखेगा: यदि आप कुछ संदर्भ चाहते हैं, तो आप यहीं पर निर्मित व्यूपोर्ट कक्षाएं पा सकते हैं।
StretchViewport
StretchViewport
Viewport
एक Viewport
प्रकार है, जो एक आभासी स्क्रीन आकार का समर्थन करता है।
यह आपको एक निश्चित (संकल्प स्वतंत्र) चौड़ाई और ऊंचाई को परिभाषित करने की अनुमति देता है।
वर्चुअल सुझाव अनुपात वास्तविक पहलू अनुपात से मेल नहीं खाता है, जैसा कि नाम से पता चलता है, StretchViewport
आभासी स्क्रीन को फैलाता है। ओपनजीएल व्यूपोर्ट को संशोधित नहीं किया जाएगा और इसमें काली पट्टियाँ नहीं दिखाई देंगी।
उपयोग:
private Viewport viewport;
private Camera camera;
public void create() {
camera = new OrthographicCamera();
viewport = new StretchViewport(80, 48, camera);
}
public void resize(int width, int height) {
viewport.update(width, height);
}
FitViewport
FitViewports ऐसे व्यूपोर्ट हैं जो हमेशा पहलू अनुपात को बनाए रखते हैं। यह किनारों पर काली पट्टियाँ बनाकर करता है जहाँ जगह बची है। यह सबसे अधिक इस्तेमाल किए जाने वाले व्यूपोर्ट में से एक है।
उपयोग:
private Viewport viewport;
private Camera camera;
public void create() {
camera = new OrthographicCamera();
viewport = new FitViewport(80, 48, camera);
}
public void resize(int width, int height) {
viewport.update(width, height);
}