0

我想知道是否有一种方法可以将原点设置为屏幕中心。

例如我通常这样做:

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

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

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

4

1 回答 1

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);
    }
}

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

于 2013-05-07T07:24:11.093 回答