在XNA中将默认原点从左上角更改为中心

时间:2013-05-07 00:01:52

标签: c# xna

我想知道是否有办法将原点设置为屏幕中心。

例如我通常这样做:

`origin = new vector2D(image.height / 2,image.width / 2);

spritebatch.Draw(image,vector.zero,null,Color,0,origin,none,0); `

现在图像的原点位于中间。我希望能够做一个vector.zero并将图像放在屏幕中间而不做我通常做的事情。这可能吗?

1 个答案:

答案 0 :(得分:1)

除非你在谈论屏幕空间,否则这不是坐标系统的工作原理。在这种情况下,整个屏幕映射到[-1,-1](左上) - [1,1](右下)。这是无用的,所以不要这样做。

你需要做的是让自己成为一个精灵级别,你可以在其中执行你要绘制的精灵(纹理)的原点:

public class Sprite
{
    static Vector2 WorldOrigo = new Vector2(400, 240); //center of a 800x480 screen

    Texture2D Texture { get; set; }
    Vector2 Origin { get; set; }

    public Sprite(Texture2D texture)
    {
        Texture = texture;
        Origin = new Vector2(texture.Width / 2, texture.Height / 2);
    }

    public void Draw(Vector2 position, SpriteBatch spriteBatch)
    {
        spriteBatch.Draw(Texture, WorldOrigo + position - Origin, Color.White);
    }
}

请注意,这只是一个例子。你的精灵可能会有动画代码等等。