আপনি যা করতে চান তা বেশ সাধারণ। এটি এবং অন্যান্য সাধারণ কৌশলগুলির উপর একটি সুন্দর টিউটোরিয়ালের জন্য, এই টাইল ইঞ্জিন সিরিজটি দেখুন ।
আপনি যদি এর আগে কিছু না করেন তবে আমি সিরিজটি দেখার পরামর্শ দিই। তবে আপনি চাইলে আপনি শেষ টিউটোরিয়াল কোডটি পেতে পারেন। আপনি যদি পরে করেন তবে অঙ্কন পদ্ধতিটি দেখুন।
সংক্ষেপে, আপনাকে প্লেয়ারের চারপাশে আপনার নূন্যতম এবং সর্বাধিক এক্স / ওয়াই পয়েন্টগুলি সন্ধান করতে হবে। একবার আপনি একবারে প্রত্যেকটি লুপ করে সেই টাইলটি আঁকবেন।
public override void Draw(GameTime gameTime)
{
Point min = currentMap.WorldPointToTileIndex(camera.Position);
Point max = currentMap.WorldPointToTileIndex( camera.Position +
new Vector2(
ScreenManager.Viewport.Width + currentMap.TileWidth,
ScreenManager.Viewport.Height + currentMap.TileHeight));
min.X = (int)Math.Max(min.X, 0);
min.Y = (int)Math.Max(min.Y, 0);
max.X = (int)Math.Min(max.X, currentMap.Width);
max.Y = (int)Math.Min(max.Y, currentMap.Height + 100);
ScreenManager.SpriteBatch.Begin(SpriteBlendMode.AlphaBlend
, SpriteSortMode.Immediate
, SaveStateMode.None
, camera.TransformMatrix);
for (int x = min.X; x < max.X; x++)
{
for (int y = min.Y; y < max.Y; y++)
{
Tile tile = Tiles[x, y];
if (tile == null)
continue;
Rectangle currentPos = new Rectangle(x * currentMap.TileWidth, y * currentMap.TileHeight, currentMap.TileWidth, currentMap.TileHeight);
ScreenManager.SpriteBatch.Draw(tile.Texture, currentPos, tile.Source, Color.White);
}
}
ScreenManager.SpriteBatch.End();
base.Draw(gameTime);
}
public Point WorldPointToTileIndex(Vector2 worldPoint)
{
worldPoint.X = MathHelper.Clamp(worldPoint.X, 0, Width * TileWidth);
worldPoint.Y = MathHelper.Clamp(worldPoint.Y, 0, Height * TileHeight);
Point p = new Point();
// simple conversion to tile indices
p.X = (int)Math.Floor(worldPoint.X / TileWidth);
p.Y = (int)Math.Floor(worldPoint.Y / TileWidth);
return p;
}
আপনি দেখতে পাচ্ছেন অনেক কিছুই চলছে। আপনার এমন একটি ক্যামেরা দরকার যা আপনার ম্যাট্রিক্স তৈরি করতে চলেছে, আপনার বর্তমান পিক্সেল অবস্থানটি একটি টাইল সূচীতে রূপান্তর করতে হবে, আপনি আপনার ন্যূনতম / সর্বাধিক পয়েন্টগুলি খুঁজে পান (আমি আমার ম্যাক্সে কিছুটা যুক্ত করব যাতে এটি দৃশ্যমান পর্দার বাইরে কিছুটা আঁকবে) ), এবং তারপরে আপনি এটিকে আঁকতে পারেন।
আমি সত্যিই টিউটোরিয়াল সিরিজ দেখার পরামর্শ দিই। তিনি আপনার বর্তমান সমস্যা, কীভাবে টাইল সম্পাদক তৈরি করবেন, প্লেয়ারকে সীমানার মধ্যে রেখে, স্প্রিট অ্যানিমেশন, এআই মিথস্ক্রিয়া ইত্যাদি ...
সাইড নোটে টাইলডলিব এটি অন্তর্নির্মিত রয়েছে You আপনি তাদের কোডটিও অধ্যয়ন করতে পারেন।