I am working on a tilemap based game in cocos2d in which the player moves in four directions and I have used four images for the movement of player for example left,right,top and down. My problem is that when my background map change its position or move to other position then my sprite does not change its position. Can anyone tell me how to move a sprite with the movement of background.
问问题
243 次
3 回答
0
有几种方法可以处理基于 tilemap 的游戏,但都不是很方便。一种方法是始终将您的角色留在屏幕中央,然后将背景移到其下方。如果您的角色“向右”移动,您只需将背景向左滑动,反之亦然。这将产生角色在地图上移动的错觉,而实际上它仍然居中。在这种范式下,您必须记住将所有检测/碰撞转换为世界空间,而不仅仅是屏幕空间。如果您不转换所有内容,那么您的碰撞/检测“范围”仅限于屏幕大小。
第二种方法是在世界范围内平移相机。您仍然将角色保持在屏幕中间,但它实际上在世界各地移动,并且相机跟随。这对我来说是最直观的感觉,因为它让您可以像查看现实世界一样查看游戏世界。处理碰撞也容易得多,因为角色和世界的位置“正常工作”并且不必转换。这里的缺点是 Cocos2D 并没有使 CCCamera 易于使用,并且在这方面文档有点薄。
在您的特定情况下,听起来您遇到了 CCLayer 问题。如果您的角色在您正在移动的图层内,那么它确实会相对于地图保持在同一位置(如您所描述的那样)。相反,将角色浮动在地图顶部的不同层中。
于 2013-03-08T20:26:53.980 回答
0
您可以使用滚动视差,然后将精灵添加到与背景相同的图层上。他们将一起移动。
于 2013-03-11T16:14:56.427 回答
0
使用 CCNode 来包含玩家的背景和精灵。不要移动背景,而是移动该节点。
于 2013-03-08T13:28:48.650 回答