2d相机没有正确跟随精灵

时间:2010-10-27 03:55:34

标签: c# visual-studio xna xna-3.0

我需要一个精灵跟照相机的帮助。我有一个没有正确遵循精灵的相机类。我的相机类是

camera cam;
cam.position = sprite.position;

这段代码没有正确执行。每次运行此代码时,它都会重置我的精灵,就像它在位置(0,0)然后跟随我的精灵一样。这是我所说的video example 我精灵的位置是(60,515)。

class Camera2d
{
    public float _zoom;
    public Matrix _transform;
    public Vector2 _position;
    protected float _rotation;

    public Camera2d()
    {
        _zoom = 1.0f;
        _rotation = 0.0f;
        _position = Vector2.Zero;
    }
    //public float Zoom {  }
    //public float Rotation {  }
    public void Move(Vector2 amount)
    {
        _position += amount;
    }
    public Vector2 CPos
    {
        get { return _position; }
        set { _position = value; }
    }
    public Matrix get_tranformation(GraphicsDevice graphicsDevice)
    {
        _transform = Matrix.CreateTranslation(new Vector3(-_position.X, -_position.Y, 0));

        return _transform;
    }
}

1 个答案:

答案 0 :(得分:0)

您正在查看精灵偏移问题。你的精灵位置和你的相机位置之间的差异是什么。因此,您的精灵似乎始终位于{0,0}。

如果您将相机的位置偏移了视图高度和宽度的一半,那么它将显示为您的精灵的中心。

cam.position = sprite.position;
cam.position.x -= cam.width / 2;
cam.position.y -= cam.height / 2;
相关问题