আমি কীভাবে প্রক্রিয়াজাতভাবে তৈরি টাইলগুলি libgdx এ প্রয়োগ করব?


11

আমি লিবিজিডিএক্সে একটি সহজ শীর্ষে জেলদা-এসকে গেম তৈরি করছি, এবং আমি টালি-ভিত্তিক ডানজোনগুলি প্রয়োগ করতে চাই যা প্রক্রিয়াগতভাবে উত্পন্ন হয়, এটির মতোই

লিবিডিডিএক্সের টাইলড্যাপ বলে একটি ক্লাস রয়েছে যা আমার প্রয়োজনের সাথে খাপ খায়, তবে অফিসিয়াল ডক্সের বাইরে ডকুমেন্টেশন থেকে বোঝা যায় যে টাইলডম্যাপগুলি কেবলমাত্র .tmx ফাইলের সাথে ব্যবহার করা যেতে পারে, বা অন্য কথায় প্রাক-নকশাকৃত মানচিত্রগুলি ব্যবহার করা যেতে পারে। আমি কোনও লাভই করতে মোটামুটি পরিমাণে গুগলিং করেছি, তাই আমি এখানে একটি শেষ অবলম্বন হিসাবে জিজ্ঞাসা করছি যে কেউ গতিশীলভাবে উত্পাদিত টাইল মানচিত্রের জন্য libgdx ব্যবহার করার অভিজ্ঞতা আছে।

সম্পাদনা: আমি আমার লক্ষ্য অর্জনের জন্য উপরে সংযুক্ত টিউটোরিয়ালটির সাথে একত্রে স্ট্যাটিক টাইল্ডম্যাপটাইসগুলি ব্যবহার করতে পারি?

ধন্যবাদ!


আপনি কি .tmx ফাইলে উত্পন্ন মানচিত্রের ডেটা লিখতে এবং LibGdx এ ব্যবহার করতে পারবেন না?
শুক্র

এটা আকর্ষণীয়. আমি মনে করি আমি পারতাম, যদিও আমার মনে হয় তা দ্রুত প্রজন্মের জন্য আদর্শ হবে না।
ক্যামডডেন

উত্তর:


6

আপনি .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-tests/src/com/… থেকে ফাইলের প্রয়োজন ছাড়াই ডায়নামিকভাবে টাইলম্যাপ তৈরি করতে এই উদাহরণ কোডটি পেয়েছি । ধন্যবাদ।
হ্যাক্স্পোর 21

1

/ আর / গেমদেবের পরামর্শের ভিত্তিতে , আমি সিদ্ধান্ত নিয়েছি যে বিল্ট-ইন ক্লাসগুলি libgdx এর টাইল্ডম্যাপ ইত্যাদির জন্য এড়ানো এবং কেবল আমার নিজের তৈরি করা উচিত।

অনুরোধ করা হলে আমি আরও বিশদে যেতে পারি, তবে মূলত আমি যা করেছি তা এখানে।

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অফসেট দিয়ে with

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.