Я делаю игру, в которой я рисую спрайты из листа спрайтов.Мой класс Sprite имеет целочисленное свойство spriteDirection, и когда оно равно +1, спрайт направлен вправо, а когда он равен -1, спрайт переворачивается влево.Я успешно использовал этот метод Draw:
public void Draw(SpriteBatch spriteBatch)
{
if (draw)
{
int drawX = (int)(spritePosition.X - spriteOffset.X);
int drawY = (int)(spritePosition.Y - spriteOffset.Y);
if (texture != null)
{
spriteBatch.Draw(texture, new Rectangle(drawX, drawY, frameWidth, frameHeight), rSpriteSourceRectangle, Color.White);
}
}
}
rSpriteSourceRectangle рассчитывается следующим образом:
private Rectangle rSpriteSourceRectangle
{
get
{
if (spriteDirection == -1)
{
return new Rectangle(frameOffsetX + (frameWidth * (currentFrame + 1)), frameOffsetY, -frameWidth, frameHeight);
}
else
{
return new Rectangle(frameOffsetX + (frameWidth * currentFrame), frameOffsetY, frameWidth, frameHeight);
}
}
}
Это все работает абсолютно нормально.Однако я хочу иметь возможность переключиться на использование этого нового метода Draw:
public void Draw(SpriteBatch spriteBatch)
{
if (draw)
{
Vector2 positionDraw = spritePosition - spriteOffset;
if (texture != null)
{
spriteBatch.Draw(texture, positionDraw, rSpriteSourceRectangle, Color.White);
}
}
}
Это работает при условии, что мое свойство spriteDirection равно 1 (поэтому спрайт направлен вправо).Если я сделаю его равным -1, спрайт исчезнет с экрана.Я не могу понять, почему это происходит.Я уверен, что это что-то простое, поэтому, надеюсь, какой-нибудь приятный человек может направить меня в правильном направлении!
Спасибо!