1

我正在潜入并尝试学习 cocos2d。目前我正在尝试在按下按钮时交换一个图块集。

示例:玩家站在草地上,您按下一个按钮,图块集变为雪纹理。

我使用平铺来创建地图,我希望我能够切换平铺用于显示瓷砖的图像表。

图像页大小完全相同,图像位置完全相同。

如果有人有任何建议或意见,我将不胜感激!:)

4

1 回答 1

2

使用瓦片集的 CCTMXLayer 类继承自 CCSpriteBatchNode。您可以尝试向 CCTMXLayer 发送带有新图块集纹理的 setTexture: 消息。

然而,只是略读代码,这将是一个问题。例如,设置纹理肯定不会改变当前作为批处理节点子节点的任何瓦片的纹理,这意味着它们将无法渲染或事情会崩溃,因为它们将使用与批处理节点不同的纹理。有可能同时更新所有精灵的纹理,但我认为这不会起作用,因为无论是批处理节点还是精灵的纹理发生变化,都会与批处理节点的纹理不同并触发错误。

一种可能的方法似乎是删除整个 CCTMXLayer 并用新的替换它。然而,CCTMXLayer 使用仅在内部使用的结构进行初始化,并且至少有一些可能仅在加载时可用。因此,最终在普通 cocos2d 中替换瓦片集的唯一方法可能是替换整个 CCTMXTiledMap 节点,这对于这么简单的事情来说意味着很多开销。

当然,您可以将草和雪地砖添加到同一个图块集中,只需更改图块 GID,如果您只想这样做。

正如我所提到的,KoboldTouch 允许在运行时更改图块集。KoboldTouch 本身使用 cocos2d-iphone 作为其渲染器。

于 2013-05-13T20:44:31.850 回答