如何随着背景的移动移动精灵?

时间:2013-03-08 13:03:20

标签: objective-c xcode cocos2d-iphone ios4

我正在使用cocos2d中基于tilemap的游戏,其中玩家在四个方向上移动并且我已经使用四个图像来移动玩家,例如左,右,上和下。我的问题是当我的背景地图改变它的位置或移动到其他位置时,我的精灵不会改变它的位置。任何人都可以告诉我如何通过背景移动来移动精灵。

3 个答案:

答案 0 :(得分:0)

使用CCNode包含玩家的背景和精灵。移动该节点,而不是移动背景。

答案 1 :(得分:0)

有几种方法可以处理基于tilemap的游戏,而且它们都不是很方便。一种方法是始终将角色留在屏幕中央,并移动背景下方的背景。如果你的角色向右移动,你只需将背景向左滑动,反之亦然。这将产生角色围绕地图移动的错觉,而实际上它仍然居中。在这种范例下,您必须记住将所有检测/碰撞转换为世界空间,而不仅仅是屏幕空间。如果你没有转换所有东西,那么碰撞/探测的“范围”就会受到屏幕尺寸的限制。

第二种方法是将相机平移到世界各地。你仍然将角色保持在屏幕中间,但它实际上在世界各地移动,然后摄像机跟随。这对我来说是最直观的意义,因为它可以让你在看到现实世界时查看游戏世界。处理碰撞也要容易得多,因为角色的位置和世界“正常工作”并且不必转换。这里的缺点是Cocos2D不易于使用CCCamera,并且文档在这方面有点薄。

在您的特定情况下,听起来您有CCLayer问题。如果您的角色位于您正在移动的图层内,它确实会保留在相对于地图的相同位置(正如您所描述的那样)。相反,将角色浮动在地图顶部的不同图层中。

答案 2 :(得分:0)

您可以使用滚动视差,然后将精灵添加到与背景相同的图层上。他们会一起移动。