1

因此,使用Tiled,我可以在将其放置在地图上之前直接在图块上设置 Tile 属性,如下所示:

设置平铺属性

这就是我完成碰撞检查的方式,将碰撞属性设置为“true”,然后在移动精灵时检查平铺属性。

但是,我想添加一个“传送”图块。当玩家在特定的瓷砖上行走时,它会将他们带到一个单独的位置。

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

我忽略了什么吗?一般来说,在 Cocos2d 中是否有更好的方法来做到这一点?

4

2 回答 2

2

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

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

当然,您也可以检查与对象(矩形)的交集,但由于您可能不小心创建了跨越多个图块的对象(矩形),因此在游戏开始之前检查这些对象似乎更可靠。

于 2012-08-26T20:11:37.347 回答
1

好吧,这可能是最好的方法,但这是我所做的。您可以创建一个元层并为每个传送垫设置单独的图块。因此,当您检查玩家是否在 teleportingpad1 上时,您将玩家位置设置为 receiverPad1(可能是另一个瓷砖、瓷砖中的对象,或者只是您在检查碰撞时设置的一个点)。您只需制作另一个,例如 teleportingpad2、teleportingpad3 等,以获得更多的垫子。

于 2012-08-27T15:29:42.070 回答