【问题标题】:Rotate a Texture2D with the Draw method in XNA?在 XNA 中使用 Draw 方法旋转 Texture2D?
【发布时间】:2012-04-11 08:03:57
【问题描述】:

我在旋转时遇到问题。我知道我可以使用 draw 方法旋转 Texture2D 对象。

我的目标是将纹理旋转 180°。例如,如果我用相机拍摄头部位于底部的人的照片,我希望能够旋转它以使头部再次位于顶部。

这里是代码或轮换:

spriteBatch.Draw(Texture, Position, null, Color.White, MathHelper.Pi, new Vector2(), 1.0f, SpriteEffects.None, 0f);

旋转工作正常,但我还有另一个问题:

如果我在旋转后将纹理添加到位置 0,0,则它不再可见。

如何旋转或反射对象,使红点再次出现在左上角?

【问题讨论】:

    标签: c# xna


    【解决方案1】:

    http://msdn.microsoft.com/en-us/library/ff433989.aspx

    public void Draw (
         Texture2D texture,
         Vector2 position,
         Nullable<Rectangle> sourceRectangle,
         Color color,
         float rotation,
         Vector2 origin,
         Vector2 scale,
         SpriteEffects effects,
         float layerDepth)
    
    //Using:
    var origin = new Vector2()
    {
        X = texture.Width / 2,
        Y = texture.Height/ 2
    };
    
    
    spriteBatch.Draw(texture, Vector2.Zero, null, Color.White, MathHelper.Pi, origin, 1f, SpriteEffects.None, 0f)`
    

    【讨论】:

    • 这不是正确的解决方案,因为精灵的 0/0 不在左上角。
    • 作为旁注,我建议通过它们的中心而不是左上角来定义精灵位置。它更直观,避免了定位和碰撞带来的麻烦。
    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多