【问题标题】:XNA Draw Method Offsetting unintentionallyXNA Draw Method 无意中偏移
【发布时间】:2013-08-20 01:33:41
【问题描述】:

对于我当前的项目,我正在尝试包含一个简单地在原地旋转的精灵。这应该很容易,但出于某种原因,XNA 正在为我的精灵的位置添加一个偏移量。

这是我正在使用的绘制方法:

spriteBatch.Draw(
             texture,   //texture2D
             position, //position Vector2
             null,  //source Rect (null draws whole texture)
             Color.White, //Color
             rotation, //rotation (float)
             new Vector2(position.X + (texture.Width / 2), position.Y +(texture.Height / 2)), //origin
             1f, //scale (float)
             SpriteEffects.None, //spriteEffects
             1); //layer depth

这里的位置是任意的,目前设置为视口的中底。旋转是一个增量浮点数(增量为 0.1f),当单步执行代码时,原点和位置都保持正确的值。

但无论我尝试什么,精灵总是在距原点一定距离处绘制。它围绕原点旋转,但它不是中心轴,而是在屏幕上呈拱形。

我已经尝试了 XNA 4.0 内置绘图方法的所有变体。任何提到轮换的都有这种效果。 (基本(纹理,位置,颜色)方法,位置方面很好。 我也尝试过改变其他东西的纹理,老实说我已经尝试了我能想到的一切。

我非常感谢任何帮助。如果需要更详尽的示例,我将分享它,但老实说,在此方法之外实际上并没有发生任何会影响它的事情。

感谢您抽出宝贵时间阅读!

【问题讨论】:

    标签: c# xna xna-4.0


    【解决方案1】:

    我认为你的问题在这里:

    new Vector2(position.X + (texture.Width / 2), position.Y +(texture.Height / 2))
    

    原点仅用于计算纹理的尺寸,因此如果您希望它围绕其中心旋转,您只需设置:

    new Vector2(texture.Width / 2, texture.Height / 2)
    

    您已经在第二个参数中设置了位置。

    【讨论】:

    • 乐于助人,你的名字是pinckerman!非常感谢,彻底解决了问题,我对 XNA 的了解也增加了!
    猜你喜欢
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多