我可以在图像周围制作边框吗? 我在2D中有很多块,当玩家用鼠标悬停在其中一个上时,我想在纹理/图像周围显示边框。
这就是我实际绘制块的方式(我认为它不相关,但也许会有所帮助):
batch.draw(map.map[mapPos].TEXTURE, (mapPosX * Block.WIDTH), (mapPosY * Block.HEIGHT), Block.WIDTH, Block.HEIGHT);
是否可以使用代码或者我应该使用纹理和边框创建单独的图像? 有什么想法吗?
答案 0 :(得分:4)
您可以先尝试使用ShapeRenderer绘制边框,然后使用batch.draw覆盖边框。这完全是在代码中完成的,不使用纹理。下面的代码添加了蓝色边框。
在render()
batch.end()
之后添加以下内容。
batch.end(); // Add the following after this line
sr.setProjectionMatrix(camera.combined);
sr.begin(ShapeType.Line);
sr.setColor(new Color(0,0,1,0));
sr.rect((mapPosX * Block.WIDTH), (mapPosY * Block.HEIGHT), Block.WIDTH, Block.HEIGHT));
sr.end();
当然,您需要在Screen
或ApplicationListener
实施中初始化ShapeRenderer。只需在声明和初始化批处理的代码中执行此操作即可。
在你的游戏课程中:
SpriteBatch batch; //Put the following below this line
ShapeRenderer sr;
在你的构造函数中:
batch = new SpriteBatch(); //Put the following below this line
sr = new ShapeRenderer();
编辑:我重写了这个函数,以便在绘制纹理批处理后绘制形状。
答案 1 :(得分:4)
我会推荐这两种方法中的一种:
这是我个人的观点,但我从不喜欢libgdx中的形状渲染。我忘了如何使用形状渲染器,但是如果需要像nedR的答案那样设置投影矩阵,我描述的方式也会更快。