Cocos2d + Tiled + Teleportation(Tile Properties)?

时间:2012-08-26 14:05:52

标签: cocos2d-iphone sprite

因此,使用Tiled,我可以直接在磁贴上设置Tile Properties,然后将其放置在地图上,如下所示:

Setting Tile Properties

这就是我通过将碰撞属性设置为'true'然后在移动精灵时检查tile属性来完成碰撞检查的方法。

但是,我想添加一个'teleport'磁贴。当玩家走在特定的磁贴上时,它会将它们带到一个单独的位置。

我遇到的问题是,当您在磁贴上设置属性时,您只能设置一次,而不是在磁贴实例上。意味着每个图块都具有相同的传送位置。

我忽略了什么吗?有没有更好的方法在Cocos2d中执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以使用对象图层。添加"对象" (这只是Tiled中的一个矩形或点)到传送器磁贴并使用对象的属性将两个位置连接在一起。

加载地图时,您可以遍历所有对象以查找连接对象。然后你知道传送器端点的两个瓦片位置,你可以存储在一个传送阵列中。每次你的玩家移动到一个新的牌,检查传送阵列,看看玩家是否在其中一个传送区域,如果他是,则将他移动到另一个传送牌。

当然你也可以检查与对象(矩形)的交集,但是因为你可能会意外地创建一个跨越多个图块的对象(矩形),所以在游戏开始之前检查这些对象似乎更可靠

答案 1 :(得分:1)

这可能是最好的方式,但这就是我所做的。您可以创建一个元图层,并为每个传送垫添加单独的图块。因此,当您检查播放器是否在teleportingpad1上时,您将播放器位置设置为receiverPad1(可能是另一个磁贴,平铺中的对象,或者只是在您检查碰撞时设置的点)。而你只需要制作另一个,例如teleportingpad2,teleportingpad3等更多的垫子。