Я пытаюсь заставить повернутый Texture2D
правильно вписаться / заполнить границы повернутого Polygon
(мой собственный класс), но он отказывается работать должным образом.Используемый мной метод SpriteBatch
:
spriteBatch.Draw(texture, new Rectangle((int)Position.X, (int)Position.Y, Width, Height), null, color, Rotation, Vector2.Zero, SpriteEffects.None, 1.0f);
Однако, единственными важными битами в этом являются Rectangle
и источник, который в настоящее время установлен на Vector2.Zero
,Когда вышеприведенный код запускается, он создает это изображение, где Texture2D
(закрашенный красный квадрат) смещен от Polygon
(каркас извести) на значение (texture.Width / 2, texture.Height / 2)
.Однако вращение правильное, поскольку обе фигуры имеют параллельные стороны.
Я пытался:
spriteBatch.Draw(texture, new Rectangle((int)Position.X, (int)Position.Y, Width, Height), null, color, Rotation, new Vector2(Width / 2, Height / 2), SpriteEffects.None, 1.0f);
Единственная разница в этом вызове состоит в том, что я изменил источник (точка, в которой Texture2D
должен повернуть) в new Vector2(Width / 2, Height / 2)
, что приводит к этому изображению, где Texture2D
смещено от Polygon
на значение (-Width, -Height)
, но все еще вращается с Polygon
.
Другая ошибка, которая возникает, заключается в том, что при использовании другого Texture2D
с шириной и высотой, отличной от первого, хотя это должно дать тот же результат, так как поле destinationRectangle
не изменяется.- в программе все по-другому, как показано на этом изображении.Опять же, здесь используется точно такой же вызов , что и предыдущий, только с другим изображением (с разными размерами).
Любая помощь по любому из этих вопросов будет принята с благодарностью.Спасибо!