当前位置: 首页 > 知识库问答 >
问题:

两块瓷砖之间的扩散

袁谭三
2023-03-14

我正在用libgdx做我的第一件事。那是一个平铺的2D游戏。假设我有两种瓷砖:蓝色和绿色。这些是覆盖游戏场地上一个单元格的32x32像素图像。我希望能够在图块之间创建一个过渡,比如附加图像右侧的图块。蓝色和绿色并不意味着瓷砖中的所有像素都是相同的颜色,这只是定义了像素的纹理。

我不是在问算法——我已经用JavaScript通过画布完成了。我只需要一些关于在libgdx中具体使用哪些类/技术/解决方案的指导。

所以我需要从蓝色纹理中提取像素,并在绿色纹理上绘制它们。有没有办法用着色器或者直接从蓝色瓷砖的纹理中获取像素值?

假设我已经将所有纹理(尚未计算过渡精灵)加载到TextureAtlas中。接下来应该上什么课才能达到预期效果?

更新:这里是一个粗略的例子,我的代码目前是什么。我的游戏屏幕。render()方法看起来很简单:

batch.begin();
for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
                Sprite sprite = getFloorSpriteByCell(cells[x][y]);
                batch.draw(sprite, x * 32, y * 32);
        }
}
batch.end();

在getFloorSpriteByCell()中,我在一些预加载的精灵中进行选择,仅此而已,在一个漂亮的gui中,没有漂亮的级别编辑。

我不使用tilemaps,我只需要在渲染期间在另一个纹理上绘制纹理的某些部分。

共有1个答案

燕飞文
2023-03-14

嗯,我完成了,下面是它的样子:

没有扩散:

对于扩散:

我想,代码本身太大了,而且是特定于项目的,所以不能在这里发布。以下是步骤(来自LibGDX的实际类以粗体开头,大写字母):

  1. 选择您正在扩散到的图像的单个像素,并将它们放入Pixmap(如果您的纹理像我所拥有的一样在一个纹理图集中,请使用GoogleCode上此问题中的Pixmap
  2. 绘制这些像素贴图到纹理
  3. 然后,像往常一样,绘制所有纹理到SpriteBatch。

希望这对某人有用。如果需要实际代码,请联系我。

 类似资料:
  • 我试图使用Struts 2 我在 glassfish 服务器上上传时遇到以下错误: 部署过程中发生错误:加载应用程序时出现异常:java.lang.IllegalState异常:ContainerBase.add子级:开始:org.apache.catalina.生命周期异常:java.lang.NoClassDefFoundError: org/spingframewor /core/io/su

  • 我找不到struts-tiles2-1.4.0-SNAPSHOT的源代码。jar版本的平铺。jar文件位于http://people.apache.org/~pbenedict/struts-osgi/org/apache/struts/struts-tiles2/1.4.0-SNAPSHOT/location。

  • 我计划使用Spring Boot将MVC应用程序从Spring 3移植到Spring 4。 这个web应用程序使用Apache Tiles。 考虑到百里香叶似乎是Spring的新标准,我有点困惑,并且集成得很好。 在这个应用程序中配置Tiles是一件痛苦的事情。 我们在这个应用程序中有大约20个JSP页面。 问题: 胸腔和瓷砖是相似的概念吗?(模板引擎?) 我已经看到胸腔叶可以和瓷砖一起使用…我不

  • 我试图将我的java应用程序迁移到Spring Boot。目前,我正在运行带有Apache Tiles的Spring MVC 3.2。当我迁移到Spring Boot时,我的控制器仍然被称为好的,它们将视图传递给视图解析程序,但是当Tiles去拉JSP文件时,事情就分崩离析了。我得到的错误消息是: 有没有人成功地使用了带有Spring Boot的Apache Tiles?知道怎么做吗? 提前感谢您

  • 我想将磁贴 3 集成到我的 Web 应用程序 spring3 struts2 Hibernate中,但我没有任何想法要开始。我看到的所有示例都仅使用带有瓷砖的 struts2,没有Spring的集成。

  • 我正在开发一个平台,我有一个32x32的精灵和32x32的磁贴。我还使用了一个图块引擎,它在数组的帮助下生成地图。我使用一个< code>RectangleHelper.cs来修复与瓷砖和播放器的碰撞,到目前为止,它可以与瓷砖的顶部碰撞,也可以与瓷砖的左侧碰撞。 在第一张图中,我展示了“在顶部”碰撞工作正常。没有错误什么的。 在图2中,我展示了“碰撞左侧”,这也很棒。 但是在图3中,你可以看到这个