मैं libgdx में प्रक्रियात्मक रूप से उत्पन्न टाइल कैसे लागू करूंगा?


11

मैं libgdx में एक सरल टॉप डाउन ज़ेल्डा-एसके गेम बना रहा हूं, और मैं टाइल-आधारित डंगऑन को लागू करना चाहता हूं जो इस तरह से प्रक्रियात्मक रूप से उत्पन्न होते हैं

Libgdx में TiledMap नाम की एक क्लास होती है, जो मेरी जरूरतों के हिसाब से लगती है, हालाँकि आधिकारिक डॉक्स के बाहर प्रलेखन से पता चलता है कि TiledMaps का उपयोग केवल .tmx फ़ाइलों के साथ, या दूसरे शब्दों में पूर्व-डिज़ाइन किए गए नक्शों के साथ किया जा सकता है। मैंने बिना किसी लाभ के Googling की उचित मात्रा में काम किया है, इसलिए मैं यहां अंतिम उपाय के रूप में पूछ रहा हूं कि किसी को गतिशील रूप से उत्पन्न टाइल मानचित्रों के लिए libgdx का उपयोग करने का अनुभव हो।

संपादित करें: क्या मैं StaticTiledMapTiles का उपयोग कर सकता हूं अपने लक्ष्य को प्राप्त करने के लिए ऊपर दिए गए ट्यूटोरियल के साथ संयोजन में का ?

धन्यवाद!


क्या आप उत्पन्न नक्शे के डेटा को एक .tmx फ़ाइल में नहीं लिख सकते हैं और इसका उपयोग LibGdx में कर सकते हैं?
ड्रिस

यह तो दिलचस्प है। मुझे लगता है कि मैं कर सकता था, हालांकि मुझे लगता है कि यह त्वरित पीढ़ी के लिए आदर्श नहीं होगा।
कैमडेन

जवाबों:


7

आप .tmx का उपयोग किए बिना टाइल वाले नक्शे बना सकते हैं।

TiledMap map = new TileMap();
MapLayers layers = map.getLayers();

TiledMapTileLayer layer1 = new TiledMapTileLayer(width, height, tile_width, tile_height);
Cell cell = new Cell();

cell.setTile(new StaticTiledMapTile(texture_region));
layer1.setCell(x, y, cell);

layers.addLayer(layer1);

Each of these classes are in the docs for libgdx.

यह मुझे एक विचार है। शोध के आधार पर, मुझे ये उदाहरण कोड .tmxlibgdx github.com/libgdx/libgdx/blob/master/tests/gdx-sests/src/com/… से फ़ाइल की आवश्यकता के बिना गतिशील रूप से तिलमप उत्पन्न करने के लिए मिले । धन्यवाद।
21

1

/ R / gamedev से सलाह के आधार पर , मैंने libgdx के TiledMap, आदि में निर्मित कक्षाओं के उपयोग को त्यागने का फैसला किया है और सिर्फ अपना निर्माण कर रहा हूं।

यदि अनुरोध किया जाता है तो मैं अधिक विस्तार में जा सकता हूं, लेकिन यहां मैंने जो किया है, अनिवार्य रूप से।

1: एल्गोरिथ्म मैं मूल रूप से जुड़ा हुआ है, और टाइल निर्देशांक (पिक्सेल कोर्डर्स) को स्टोर करके एक Coordinateवर्ग का उपयोग करके एक कालकोठरी उत्पन्न करें, जिसमें मैंने एक बनाया HashMap<Coord, MapTile>MapTileसिर्फ एक वर्ग है जिसके पास टाइल के प्रकार के बारे में डेटा है।

2: draw()अपने मुख्य वर्ग के कार्य में मैंने निम्नलिखित कोड जोड़ा है

ConcurrentHashMap<Coord, MapTile> dungeonMap = dungeonGen.getMap();
        for(Entry<Coord, MapTile> entry : dungeonMap.entrySet()){
            Coord coord = entry.getKey();
            MapTile tile = entry.getValue();

            if((inCameraFrustum(coord.getX() * tileSize, coord.getY() * tileSize, 100))){
                game.batch.draw(dungeonGen.getTileTexture(tile),
                        coord.getX() * tileSize, coord.getY() * tileSize);
            }

        }

जो प्रत्येक Coordinateमें पुनरावृत्त करता है dungeonMapऔर एक वैश्विक tileSizeऑफसेट के साथ टाइल (यदि समन्वय कैमरा फ्रम में है) खींचता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.