Я пытаюсь создать игру сверху вниз, в которой вы можете двигаться в 8 направлениях.Я реализовал Vector2 для того, чтобы двигаться в нормализованном порядке.Я использую систему spritebatch для рисования стандартными прямоугольниками (исходный и конечный), но вскоре изменился на RectangleF, так как обычные прямоугольники используют целые числа.
Spritebatch не распознает RectangleF и, следовательно, возвращает ошибку: «Не удается преобразовать из»System.Drawing.RectangleF 'to' Microsoft.Xna.Framework.Vector2 '? ".Цвет также возвращает неоднозначное значение, независимо от значения «System.Drawing» или «Microsoft.Xna.Framework.Color», он всегда возвращает способ его преобразования в «Microsoft.Xna.Framework.Rectangle».
Вэтот код вызывается Vector2 (Position) и используется для рисования позиции RectangleF.Затем я использую Spritebatch.Draw, чтобы нарисовать текстуру с источником и назначением, и она всегда обновляется, чтобы дать представление о движущемся персонаже.
public static RectangleF destinationRectangle, sourceRectangle;
public void Draw(SpriteBatch spriteBatch)
{
int width = 64;
int height = 64;
realPositionX = PlayerMovement.Position.X;
realPositionY = PlayerMovement.Position.Y;
sourceRectangle = new RectangleF(currentFrame * width, row * height, width, height);
destinationRectangle = new RectangleF(realPositionX, realPositionY, width, height);
spriteBatch.Begin();
spriteBatch.Draw(Player, destinationRectangle, sourceRectangle, Microsoft.Xna.Framework.Color.White); //Error Occurs Here
spriteBatch.End();
}
Я не совсем понимаю, как мне следует подойти к этой проблемеЕсть ли способ рисования RectangleF через SpriteBatch или я должен смотреть на другой метод?
Спасибо.