我想知道是否有一种方法可以将原点设置为屏幕中心。
例如我通常这样做:
`origin = new vector2D(image.height / 2, image.width /2);
spritebatch.Draw(image, vector.zero,null, Color, 0, origin, none, 0); `
现在图像的原点在中间。我希望能够做一个 vector.zero 并将图像放在屏幕中间而不做我通常做的事情。那可能吗?
除非您在谈论屏幕空间,否则这并不是坐标系的真正工作方式。在这种情况下,整个屏幕映射到 [-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);
}
}
请注意,这只是一个示例。你的精灵可能会有动画代码等等。