Monogame / XNA – 屏幕上的多重2D相机(矩形)

我最近开始使用Monogame 3.4开发一个简单的2D roguelike游戏。 我热衷于构建游戏“引擎”,因为我认为这是一个有趣的学习曲线。 对于我来说,Monogame几乎是最好的select,因为我是一个C#开发专业。 得到我的精灵在屏幕上运行后,我想我可能需要一个适当的水平继续更有趣的东西。 所以我决定为这个游戏构建一个关卡构建器。

我一直在努力研究关于构建2D相机的教程。

我用这个相机教程 ,我更喜欢这个具体的实现。 我唯一的问题是,目前,我的屏幕上有两个矩形(相机)。

在这里输入图像说明

左边的矩形代表一个包含所有可用的精灵的可滚动面板,但也是一种叠加。 在它下面,绘制了“地图”级别。 我的问题是简单的,我将如何使我的水平矩形滚动通过覆盖查看它的左侧,目前正在被面板遮住。

相关的代码文件在这里

我将不胜感激所有的帮助。 谢谢!

在绘制矩形/相机时通过使用视口来解决这个问题

GraphicsDevice.Viewport = new Viewport(_level); spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, _camera.ViewMatrix); DrawLevelTiles(); spriteBatch.End(); GraphicsDevice.Viewport = new Viewport(_panel); // draw panel spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.PointClamp, null, null, null, null); _spritePanel.Draw(spriteBatch); spriteBatch.End(); // draw tiles to panel spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, _panelCamera.ViewMatrix); DrawTiles(); spriteBatch.End();