Monogame/XNA - изометрическая игра-проблемы с положением мыши
Эй Codeproject,
Я создаю изометрическую игру, но есть проблема с переводом мыши. Я использую для этого матричную 2D-камеру, и у нее нет никаких проблем. Я уже знаю, как перевести мое положение "экрана" в положение "мира", но поскольку я рендерингую в изометрическом виде, я не знаю, как сделать так, чтобы положение "мира" трансформировалось в "изометрическое положение"."
/// <summary> /// Draws the tile. /// </summary> /// <param name="SpriteBatch">The spritebatch to draw the tile with.</param> public void Draw(SpriteBatch SpriteBatch, Vector3 Position) { // Position = not pixel position, but grid position. Size = tile size (64, 64), and source rectangle is also w64, h64 if (WorldFarmer.TileSet != null) { SpriteBatch.Draw(WorldFarmer.TileSet, new Rectangle( (int)(Position.X - Position.Y) * (int)Size.X / 2, (int)(Position.X + Position.Y) * (int)Size.Y / 4 + (int)(Position.Z * Size.Z / 2), (int)Size.X, (int)Size.Y) , SourceRectangle, Color.White, 0f, Vector2.Zero, SpriteEffects.None, 1f); } }
Вот как я визуализирую свои плитки - здесь тоже нет проблем.
Кто-нибудь может пожалуйста помочь мне? Кажется, я не могу сделать это правильно, как бы ни старался.
Что я уже пробовал:
var Pos = Camera.Position / new Vector2(Tile.Size.X / 2, Tile.Size.Y / 4); Tile.Draw(SpriteBatch, new Vector3(Pos, 10), Color.Red);
Это пока моя попытка, но мой красный блок, кажется, либо улетает от камеры, либо просто движется слишком медленно. Мне явно не хватает какой-то очевидной математики. :/