Гладкий текст, нервные спрайты - PullRequest
0 голосов
/ 12 октября 2018

с Monogame Я делаю игру, которая рисует и графику, и текст на экране, с положением, измененным матрицей камеры.Если я устанавливаю положение текста в положение камеры, все в порядке, но когда я устанавливаю спрайты в положение камеры, при движении камеры происходит очень заметное дрожание.Я думаю, что это потому, что графика рисуется с прямоугольниками, которые требуют целочисленных позиционных значений.Я полагаю, что к тексту таких требований нет.

Как заставить графику плавно следовать движению камеры, как тексту?

Если это полезно, это мой spriteBatch.Begin () вызов:

spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.LinearClamp, null, null, null, camera.GetTransformation(graphics));

И это мое преобразование камеры:

public Matrix GetTransformation(GraphicsDeviceManager graphicsDevice)
        {
            Vector3 newVector = new Vector3(-GameInfo.info.cameraPosition.X, -GameInfo.info.cameraPosition.Y, 0);

            cameraTransformMatrix = Matrix.CreateTranslation(newVector) *
                                    Matrix.CreateRotationZ(rotation) *
                                    Matrix.CreateScale(new Vector3(zoom, zoom, 1)) *
                                    Matrix.CreateTranslation(new Vector3(GameInfo.info.resolutionWidth * 0.5f, GameInfo.info.resolutionHeight * 0.5f, 0));

            return cameraTransformMatrix;
        }

Спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Мне удалось решить проблему, используя другую перегрузку SpriteBatch.Draw (), которая не зависит от прямоугольника назначения:

spriteBatch.Draw(texture, position, rSpriteSourceRectangle, Color.White);

Для справки, это был мой старый:

spriteBatch.Draw(texture, new Rectangle(drawX, drawY, frameWidth, frameHeight), rSpriteSourceRectangle, Color.White);
...