我使用Windows窗体和System.Drawing
命名空间在C#中编写2D游戏。
游戏基本上是一个战斗竞技场(橙色方块),玩家互相射击。这就是竞技场的样子(800x600分辨率):https://i.gyazo.com/54f56cead5c42519678e48118d20947b.png
由于我的游戏不是开放世界,所以要求每个玩家总是会看到100%的战斗竞技场,无论他们的分辨率如何。
我在缩放所有内容以适应不同分辨率的竞技场时遇到了问题。
例如,游戏分辨率为800x600,因此竞技场大约为780x580像素。用户突然将窗口大小调整为1280x720,因此竞技场立即变为大约1260x700像素。这有一个主要原因是有问题的:
该游戏旨在成为一款多人游戏,每个玩家都可以以不同的分辨率进行游戏。有两件事需要缩放:物体的位置(X,Y)及其大小(宽度,高度)。
我已经看到了有关缩放的其他问题,但是它们涉及开放世界的游戏,其中较低的分辨率仅意味着看不到地图。在我的情况下,要求所有玩家总是看到游戏内容的100%。
我试图对两者进行扩展,但由于位置的缩放不适合缩放尺寸,因此最终看起来太大或太小。反之亦然。
如何有效地扩展所有内容(所以每个人都能看到100%的游戏内容),特别是当多个具有不同分辨率的用户玩游戏时?
答案 0 :(得分:2)
确定水平和垂直缩放系数,并按最小因子进行缩放。这样整个领域都适合。将精灵的位置和大小也缩放到这个因子。
将缩放代码包含在一个隐藏因子的单独控件中,以便游戏的其余部分可以采用固定大小。