我正在尝试使用以下代码绕其中心旋转 Sprite :
Vector2 origin = new Vector2(position.Width / 2, position.Height / 2);
s.Draw(position, origin, angle, Color.White);
spriteBatch.Draw(texture, position, sourceRectangle, color, rotation, origin, SpriteEffects.None, 0);
注意:由于我是从 Sprite 表中绘制的,因此正在计算源矩形。
我的 Sprite 的原始大小是 15x32。如果我使用这个尺寸,旋转看起来几乎正确,但仍然有一点偏移:
但是,当我将宽度和高度调整为 75x128 时, Sprite 会完全移位:
有没有办法在调整 Sprite 大小时始终将 Sprite 放置在正确的位置?为什么在以原始尺寸绘制 Sprite 时, Sprite 甚至会发生位移?
顺便说一句,绿色框是原点,其大小是 Sprite 的大小。
非常感谢!
最佳答案
好吧,我自己想出来了!
创建原点时,我使用了新的宽度和高度 (75, 128),但必须使用原始 Sprite 的宽度和高度。在本例中为 (15, 32)。
关于rotation - Monogame - Sprite 不围绕原点旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74029630/