আমি হীরা আকারের বিশ্বে প্লট (বিশ্ব-> স্ক্রিন) এবং মাউস পিক (বিশ্ব-> স্ক্রিন) আইসোমেট্রিক টাইলসের জন্য একটি সূত্র খুঁজছি। আমি যেগুলি সর্বদা চেষ্টা করেছি সেগুলি ভাল, বন্ধ বলে মনে হচ্ছে। এটি করার স্বাভাবিক / সঠিক উপায় কী?
আমি হীরা আকারের বিশ্বে প্লট (বিশ্ব-> স্ক্রিন) এবং মাউস পিক (বিশ্ব-> স্ক্রিন) আইসোমেট্রিক টাইলসের জন্য একটি সূত্র খুঁজছি। আমি যেগুলি সর্বদা চেষ্টা করেছি সেগুলি ভাল, বন্ধ বলে মনে হচ্ছে। এটি করার স্বাভাবিক / সঠিক উপায় কী?
উত্তর:
আপনার মন্তব্যের ভিত্তিতে, এখানে কোডটি আমি টাইল এক্স, y মানকে স্ক্রিন স্থানাঙ্কে রূপান্তর করতে ব্যবহার করছি। এখন, এটি "3 ডি টাইলস" বিবেচনায় নেয় না, সমস্ত কিছু একই বিমানে থাকা হিসাবে বিবেচিত হয়, তাই আপনি যদি এমন কোনও গেম লেখেন যেখানে এটি গুরুত্বপূর্ণ, এই কোডটি কার্যকর হবে না।
//this converts a map x/y coordinate into screen coordinates
//public, static method, so can be called outside the Tile object
point Tile::convertToScreen(int x, int y, int offsetX, int offsetY)
{
point screen;
//calculate the screen coordinates
//note: these will then be modified by the camera
screen.x = offsetX - (y * TILE_WIDTH/2) + (x * TILE_WIDTH/2) - (TILE_WIDTH/2);
screen.y = offsetY + (y * TILE_DEPTH/2) + (x * TILE_DEPTH/2);
return screen;
}
পয়েন্টটি কেবলমাত্র x এবং y ইন্টি সমন্বিত একটি কাঠামো, আপনার ক্ষেত্রে TILE_WIDTH 64৪ হবে, টাইপ_ডিপিটিএইচটি নাম খারাপভাবে নাম করা হয়েছে (এটি আসলে টাইল গ্রাফিক্সের উচ্চতা) তবে এটি আপনার ক্ষেত্রে 32 হবে। অফসেটগুলি হ'ল যদি আপনি আপনার টাইল মানচিত্রটি অন্য কোনও এক্স, ওয়াই অবস্থানের "শুরু" করতে চান (যেমন আপনি যদি টাইলস অন্য টাইলের সেট থেকে উপরে থাকতে চান)। সাধারণত অফসেট 0,0 হতে পারে।
এটি শীর্ষে, মাঝের দিকে 0,0 সহ একটি মানচিত্র তৈরি করবে:
0,0
0,1 1,0
0,2 1,1 2,1
কার্সারের টাইল x, y সন্ধান করার জন্য:
point selectedTile;
int x = mX - camera.x;
int y = mY - camera.y;
selectedTile.x = (y + x/2)/TILE_DEPTH;
selectedTile.y = (y - x/2)/TILE_DEPTH;
এই বিটের কোডে, এমএক্স এবং এমওয়াই হ'ল মাউস স্ক্রিনের স্থানাঙ্ক, যা আমরা "ওয়ার্ল্ড কোঅর্ডিনেটে" কোথায় রয়েছি তা অনুসন্ধানের জন্য ক্যামেরা মানগুলির সাথে একত্রিত করছি। সমস্ত কিছু পূর্ববর্তী কোড উদাহরণের মতো।
আবার, এটি একটি ফ্ল্যাট 2 ডি আইসোমেট্রিক টাইল মানচিত্র ধরে নিয়েছে। আপনি যদি মানচিত্রের একটি আধা -3 ডি ভিউ ব্যবহার করতে চান তবে কিছু অতিরিক্ত কাজ রয়েছে এবং এটি সমস্তই ধরে নেয় যে আপনি যেভাবেই 2 ডি তে কাজ করছেন।