0

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

camera cam;
cam.position = sprite.position;

这段代码没有正确执行。每次我运行这段代码时,它都会重置我的精灵,就好像它在位置 (0,0) 一样,然后跟随我的精灵。这是我正在谈论的视频示例。
我的精灵的位置在 (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;
    }
}
4

1 回答 1

0

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

如果您将相机的位置偏移其视图高度和宽度的一半,那么它将看起来使您的精灵居中。

cam.position = sprite.position;
cam.position.x -= cam.width / 2;
cam.position.y -= cam.height / 2;
于 2010-10-27T20:22:58.980 回答