我正在用 Java 编写一个 2D 等距游戏引擎来娱乐和练习,我已经到了我试图找出以正确顺序渲染精灵以模拟深度的最佳方式的地步。我没有读过太多关于这个主题的书,但我总是喜欢在使用别人的解决方案之前尝试提出自己的解决方案。那么,以下两种解决方案中哪一种更优化,为什么?如果我离得太远,那么以正确顺序渲染精灵的实际最佳方式是什么?注意 - 我的游戏是自由移动的,例如 2D 塞尔达,而不是 Pokemon Red 中的网格样式。
我可以使用按深度顺序存储的实体对象的链接列表。然后每当每个实体移动时,将其当前 Y 位置与前一个节点和下一个节点进行比较,并在必要时交换位置。然后,重复该过程,直到不再需要为止。(我不确定 Java 的链表是如何工作的,但如果需要,我可以制作一个自定义列表)
只需有一个长度等于屏幕高度(以像素为单位)的实体数组。然后当每个实体移动时,只需将其在数组中的位置更改为等于其在屏幕上的 Y 位置的位置(或者如果该点被占用,则为最近的可用点)。