2013-05-07 55 views
0

我想知道是否有方法可以将原点设置为屏幕中心。在XNA中将默认原点从左上角更改为中心

例如我通常这样做:

`原点=新的Vector2D(image.height/2,image.width/2);

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

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

回答

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

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

+0

我会尝试,当我可以,谢谢 – Jcorretjer 2013-07-16 10:26:35

相关问题