我想知道是否有办法将原点设置为屏幕中心。
例如我通常这样做:
`origin = new vector2D(image.height / 2,image.width / 2);
spritebatch.Draw(image,vector.zero,null,Color,0,origin,none,0); `
现在图像的原点位于中间。我希望能够做一个vector.zero并将图像放在屏幕中间而不做我通常做的事情。这可能吗?
答案 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);
}
}
请注意,这只是一个例子。你的精灵可能会有动画代码等等。