【发布时间】:2019-04-02 02:13:01
【问题描述】:
我试图让旋转的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。当上面运行时,它会生成this 图像,其中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),从而生成this 图像,其中Texture2D 与 Polygon 的偏移量为 (-Width, -Height),但它仍与 Polygon 一起旋转。
发生的另一个错误是,当使用与第一个具有不同宽度和高度的不同 Texture2D 时 - 尽管它应该产生相同的结果,因为 destinationRectangle 字段不会改变 - 它在程序,如this 图像所示。同样,这使用与上一个完全相同的调用,只是使用不同的图像(具有不同的尺寸)。
我们将不胜感激任何有关这些问题的帮助。谢谢!
【问题讨论】:
标签: c# xna monogame xna-4.0 spritebatch