如何将图像放在Camera2D的相同位置?

时间:2013-11-17 09:34:15

标签: c# xna

我需要将图像放在相机的相同位置。如果它正在移动我想要移动图像,但我不知道该位置的参数。几个月前我已经开始在xna和c#编程了所以我对此一无所知。你需要更多的信息吗?这是我的camera2D代码:

public class Camera
{
    public Matrix trasform;
    public Matrix Trasform
    {
        get { return trasform; }
    }
    private Vector2 center;
    private Viewport view;

    public Camera(Viewport newView)
    {
        view = newView;
    }

    public void Update(Vector2 position, int xOffset, int yOffset)
    {
        if (position.X < view.Width / 2)
            center.X = view.Width / 2;
        else if (position.X > xOffset - (view.Width / 2))
            center.X = xOffset - (view.Width / 2);
        else center.X = position.X;

        if (position.Y < view.Height / 2)
            center.Y = view.Height / 2;
        else if (position.Y > yOffset - (view.Height / 2))
            center.Y = yOffset - (view.Height / 2);
        else center.Y = position.Y;

        trasform = Matrix.CreateTranslation(new Vector3(-center.X + (view.Width / 2),
            -center.Y + (view.Height / 2), 0));

    }
}

我想我必须使用视口,但我不知道它的所有功能,我在网上找不到任何东西。

1 个答案:

答案 0 :(得分:0)

如果我遇到您的问题,您使用transformMatrix spriteBatch.Begin参数来绘制您的游戏。
如果您需要在屏幕上添加一些2D图形(分数,时间......),则需要在没有spriteBatch的情况下打开另一个transformMatrix,这样您在spriteBatch.Draw中使用的每个坐标都是如此或DrawString对应于您的屏幕坐标。