在游戏开发的计算中使用像素

时间:2014-12-28 03:51:57

标签: unity3d libgdx 2d-games

我正在阅读一些论坛主题,并发现了一篇有趣评论的帖子。它建议在游戏开发的任何计算中都不要使用像素。例如,如果你要编写代码来让你的角色跳跃,设置角色可能跳到X像素的最大高度将是不好的做法。虽然我不能100%确定为什么这是不好的做法,我该如何以正确的方式做到这一点。例如,将最大高度设置为屏幕高度的一小部分是否更好?还是虚拟空间高度的一小部分?还是某种算法?

我问,因为我开始开发一个具有1080 x 1920虚拟空间(以像素为单位)的2D游戏,并且可能会考虑制作另一个游戏版本以支持另一个宽高比。

2 个答案:

答案 0 :(得分:4)

因为“像素”可能会在您的游戏可能正在运行的每个显示器和/或设备之间发生变化!

因此,渲染引擎的工作是在虚拟空间中构建一个场景(某种方式测量各个对象之间的距离/远距离),然后转换为实际像素。

由于你已经标记了这个“Unity3d”,让我谈谈 -

Unity场景中的所有内容都有“单位”中的位置。这些位置与任何对象(例如精灵)无关,它们只是Unity用来判断距离的方式。当你向场景添加一个精灵时,Unity会添加一个spriterenderer游戏对象,它(基本上)是一个带有一组特定导入参数的纹理。其中一个纹理参数“每单位像素数”完全符合它的含义 - 确定给定精灵占用多少“单位”。如果你导入一个精灵,每个单位50个像素,另一个精灵,每个单位100个像素,第一个精灵将是第二个精灵的两倍,因为Unity会缩放它。

如果要将虚拟空间单位称为“像素”,那很好。这个想法是你想要根据虚拟空间单位来定义跳跃,而不是依赖于系统的IO调用。

答案 1 :(得分:1)

他们所指的是“独立决议”。像素的大小并不完全相同。如果以像素为单位测量,那么在每英寸340像素的设备上,与每英寸72像素的设备相比,您的游戏会有所不同。

相反,根据某些线性长度单位(英寸,厘米,点等)或屏幕/窗口高度的一小部分进行所有测量。您可能需要离线缓冲区等类似大小的像素,但您应该确定运行时需要多少像素。对于基于文档的应用程序,使用线性大小更有意义,因此例如12点文本在任何设备上看起来都相同。在游戏中,可能更适合决定在屏幕上可以看到多少世界,并将所有内容作为场景的一小部分进行测量,无论该设备上可能有多少像素。

这个想法是,进入更高分辨率的屏幕应该会影响图像的清晰度,而不是图像的大小。