【问题标题】:Java Slick2D Texture IssueJava Slick2D 纹理问题
【发布时间】:2014-03-30 19:09:09
【问题描述】:

我今天正在开发我的游戏,我发现我的树顶有一个奇怪的纹理问题,它们用一个黑盒子相互重叠。它只是树的顶部,顶部被分成 9 个块,每个块都有自己的图像。这 9 张图像是透明的,每张都是 32x32,我尝试了很多不同的方法,但都没有运气。有谁知道纹理的问题是什么?这不是生成问题,而是关于纹理的 OpenGL/Slick2D 问题。这是问题的截图:Screenshot

编辑:这是一段渲染代码。

for (int x = (int) (World.instance.camera.getX() / Block.WIDTH); x < width; x++)
    {
        for (int y = (int) (World.instance.camera.getY() / Block.HEIGHT); y < height; y++)
        {
            try
            {
                if (blocks[x][y] != Block.AIR.getId())
                {
                    g.drawImage(textureCache.get(blocks[x][y]), x * Block.WIDTH, y * Block.HEIGHT);
                }
            }
            catch(Exception ex)
            {

            }
        }
    }

【问题讨论】:

  • 如果我们看不到您的代码,就很难知道您做错了什么。有没有机会在这里发布它的相关部分?
  • 没有任何代码可以发布它只是 g.drawImage(treeTop, x, y);
  • 好吧,在我发布答案之前,我有点想四处玩耍并尝试找出正在发生的事情。如果你只能发布一行代码,我很难做到这一点。如果您不想显示游戏代码,我理解;但只是相关部分会有所帮助。如果做不到这一点,您可以查看java-gaming.org/index.php?topic=25100.0 - 您的问题可能是它处理的问题。
  • 我发布了一个编辑,以便您查看。如果没有我希望保持离线的所有代码,很难插入。树顶被分成一个 3x3 的方块网格,顶部的每个 32x32 块都是它自己的方块。

标签: java image textures slick2d


【解决方案1】:

查看您的代码,您似乎只在每个 32x32 正方形上绘制了一个图像。因此,如果树 A 在树 B 的前面,但树 A 仅部分填充了一个正方形,则树 A 是您的 blocks 数组中列出的那棵树,因此从您的“纹理缓存”中检索;而不是树 B。所以树 A 就是绘制的所有内容。

要解决这个问题,您的 blocks 结构需要是 3D 的 - 基本上,对于每个 32x32 正方形,您需要某种“堆栈”来引用在该正方形中找到对应对象的所有图像.然后当你画那个正方形时,按顺序画出所有的图像,从后到前。

【讨论】:

  • 感谢这实际上解决了我的问题。当我查看我这一代时我意识到你是对的,并且没有检查一棵树是否与另一棵树重叠,毕竟这不是纹理问题。
  • 没问题,乐于助人。祝你在接下来的比赛中好运。
猜你喜欢
  • 2014-07-06
  • 2011-09-28
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多