Java 基于平铺的rpg游戏中的半透明对象

Java 基于平铺的rpg游戏中的半透明对象,java,android,canvas,bitmap,Java,Android,Canvas,Bitmap,我目前正在为android设备开发一个简单的、基于磁贴的rpg。我偶然发现了一个我无法有效解决的错误 渲染机制 我目前正在使用android的Canvas实现来渲染游戏中的所有内容。我使用找到的开源TMX加载程序(与哪一个无关)将平铺贴图加载到位图中。TMX加载程序加载映射文件并生成存储在TMX文件中的数据位图。我正在使用创建我的地图。游戏首先绘制tmx加载程序生成的位图,然后在地图顶部绘制所有其他对象(包括玩家) 问题 如标题所示,这会导致半透明瓷砖出现问题,如此地图中的问题: 灰色框是实体与

我目前正在为android设备开发一个简单的、基于磁贴的rpg。我偶然发现了一个我无法有效解决的错误

渲染机制

我目前正在使用android的
Canvas
实现来渲染游戏中的所有内容。我使用找到的开源TMX加载程序(与哪一个无关)将平铺贴图加载到位图中。TMX加载程序加载映射文件并生成存储在TMX文件中的数据位图。我正在使用创建我的地图。游戏首先绘制tmx加载程序生成的位图,然后在地图顶部绘制所有其他对象(包括玩家)

问题

如标题所示,这会导致半透明瓷砖出现问题,如此地图中的问题:

灰色框是实体与地图中心的井碰撞的地方

此贴图的渲染方式如下所示:

箭是球员-球员的一部分应该画在井的木梁下,但仍然在草地上

我正在努力寻找一种方法,将球员拉到井的木梁下和草地上。如果有人能给我一些建议,我将不胜感激。

我尝试过的


在我正在开发的另一个游戏中,我在平铺上创建了一个对象层,其中包含矩形,地图应绘制在玩家上方。虽然这会导致帧速率大幅下降,并且很难精确绘制所需区域上的矩形。

您需要通过y位置对播放器和透明瓷砖进行排序,然后按从上到下的顺序进行渲染。这样,屏幕越高,图像绘制越早,透明对象将正确地绘制在顶部。@Blindman67这不是意味着我必须每帧重新创建整个地图,这将杀死fps吗?游戏在一张16x16的地图上以@30fps的速度运行,这张地图甚至没有填满屏幕。恐怕是这样,但是如果渲染时间是一个问题,你可以检查可以覆盖的实体在哪里,然后只在需要的地方和时候重新绘制顶部的部分。谢谢@Blindman67。我将尝试在某个时候实现这一点