Java 游戏开发-使用屏幕坐标与世界坐标
我和一位朋友都是游戏开发新手,我们讨论了世界坐标和屏幕坐标 我们正在关注一个关于libGDX的精彩在线教程系列,他们使用了100ppm(每米像素)的比例因子。如果重新调整屏幕大小,对象的缩放将不再起作用。我的朋友确信这不是问题,他可能是对的。但是,我的印象是,在开发游戏时,开发人员通常只应使用预定义的世界坐标系,并让相机将其转换为选定的屏幕坐标。我确实理解在使用鼠标点击等时进行反向转换的必要性。但是,在世界空间中放置和缩放对象是我关心的问题Java 游戏开发-使用屏幕坐标与世界坐标,java,libgdx,game-engine,Java,Libgdx,Game Engine,我和一位朋友都是游戏开发新手,我们讨论了世界坐标和屏幕坐标 我们正在关注一个关于libGDX的精彩在线教程系列,他们使用了100ppm(每米像素)的比例因子。如果重新调整屏幕大小,对象的缩放将不再起作用。我的朋友确信这不是问题,他可能是对的。但是,我的印象是,在开发游戏时,开发人员通常只应使用预定义的世界坐标系,并让相机将其转换为选定的屏幕坐标。我确实理解在使用鼠标点击等时进行反向转换的必要性。但是,在世界空间中放置和缩放对象是我关心的问题 我想向这个社区寻求一些专业的反馈。最好以每米的单位命名
我想向这个社区寻求一些专业的反馈。最好以每米的单位命名 当你调整屏幕大小时,你只需要设置一个新的投影矩阵,这样一切都可以正常工作) 你应该担心的是长宽比 其余的一切都无关紧要 所以,回答你的问题-保持世界坐标。
它还可以简单地添加物理、光线计算、任何尺寸(1.8个单位,而不是243个像素)这是几乎所有Libgdx教程中最大的问题之一。它们很棒,但像素到米/单位的对话是错误的。
Libgdx为
Camera
提供了一个很好的解决方案,并为新的Viewport
类提供了一个更好的解决方案(它在引擎盖下与Camera
一起工作)
它非常简单,可以解决不同屏幕大小/纵横比的问题。只需选择一个
Virtual\u Width
和Virtual\u Height
(以米或类似单位考虑)。例如,在2D platformer游戏中,人类相互争斗。假设我们人类身高2米,那么想想,一个人应该使用多少屏幕空间?如果我们说,一个人应该占据屏幕空间的1/10,那么我们的虚拟高度是10*2=20。现在想想你的目标是什么。假设它是16/9,那么你有一个大约35的虚拟宽度 接下来,您需要考虑您想要什么类型的
视口。确实要使用视口
,它支持虚拟宽度
和虚拟高度
您可能需要一个视口
,它保持纵横比,并用黑色条(FitViewport
)填充屏幕的其余部分(如果屏幕具有不同的纵横比),或者您可能希望视口
通过拉伸单元来填充整个屏幕(StretchViewport
)
现在只需使用虚拟宽度和高度创建视口
,并在resize()
方法中使用给定的宽度
和高度更新它
希望能有帮助。我支持你。每件事物的像素数是一个问题,因为它不仅会改变屏幕比例,还会改变纵横比。屏幕上的数字看起来是瘦的还是宽的取决于屏幕本身。这很糟糕。开发人员通常只能使用预定义的世界坐标系,并让相机将其转换为所选的屏幕坐标。
这是正确的方法,可能更适合(我的意思是,“游戏开发”…)@Marco13实际上libgdx是一个游戏开发框架,因此大多数问题可能出现在“游戏开发”中是的,但我想也可以在这里提问和回答。每米的单位应该在模型上。模型中的1.0单位应为1米或任何单位,然后将视锥台设置为屏幕纵横比的任何单位。如果您以单位计算所有内容,则无需进行此对话,单位也可以为米,但这只是一个名称。在我看来,你应该以你的首选单位计算所有的东西,然后让相机把它转换成像素。这正是我的意思