我正在开发2D游戏,现在我面临的一个问题是,如果不解决它,我就无法继续。在我的项目中,我首先画出不会随相机移动的东西,而不是那些始终停留在相同位置的东西(主要是UI元素)。我的游戏中鼠标的矩形设置为鼠标位置+ X和Y中的相机中心。XNA - 随相机移动的物体和不移动的物体之间的相互作用
因此,虽然玩家可以点击UI元素(我现在使用鼠标和按钮之间的相交功能,我将UI上的大部分工作留到了最后),如果我试图在鼠标和任何实际随相机移动的任何事物之间进行交互,它将无法工作,因为鼠标的坐标与相机“比较”而对象不是,我不知道如何使它工作。
这里是摄像机的代码:
class Camera
{
public Matrix transform;
Viewport view;
Vector2 centre;
int x;
int y;
float zoom;
public Camera(Viewport newView)
{
view = newView;
x = 0;
y = 0;
zoom = 1;
}
public Vector2 getCentre()
{
return this.centre;
}
public void Update(GameTime gametime)
{
if (Mouse.GetState().Y < 45 && y >= 5)
y -= 3;
if (Mouse.GetState().Y > 400 && y < 650)
y += 3;
if (Mouse.GetState().X > 580 && x < 90)
x += 3;
if (Mouse.GetState().X < 60 && x > -100)
x -= 3;
centre = new Vector2(x, y);
transform = Matrix.CreateScale(new Vector3(1,1,0)) * Matrix.CreateTranslation(new Vector3(-centre.X,-centre.Y,0));
}
}