C# 在XNA中将默认原点从左上角更改为中心
我想知道是否有一种方法可以将原点设置到屏幕的中心 例如,我通常这样做: `原点=新矢量2D(image.height/2,image.width/2) spritebatch.Draw(图像、向量、零、空、颜色、0、原点、无、0)`C# 在XNA中将默认原点从左上角更改为中心,c#,xna,C#,Xna,我想知道是否有一种方法可以将原点设置到屏幕的中心 例如,我通常这样做: `原点=新矢量2D(image.height/2,image.width/2) spritebatch.Draw(图像、向量、零、空、颜色、0、原点、无、0)` 现在图像的原点在中间。我希望能够做一个vector.zero并将图像放在屏幕中间,而不做我通常做的事情。这可能吗?这不是坐标系的工作原理,除非你说的是屏幕空间。在这种情况下,整个屏幕映射到[-1,-1](左上)-[1,1](右下)。这没用,所以不要那样做 您需要做的
现在图像的原点在中间。我希望能够做一个vector.zero并将图像放在屏幕中间,而不做我通常做的事情。这可能吗?这不是坐标系的工作原理,除非你说的是屏幕空间。在这种情况下,整个屏幕映射到[-1,-1](左上)-[1,1](右下)。这没用,所以不要那样做 您需要做的是使自己成为一个sprite类,在该类中,您可以查找要绘制的sprite(纹理)的原点:
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);
}
}
请注意,这只是一个示例。您的精灵可能会有用于动画等的代码