我对Cocos2d有一些经验,但是自从我使用它以来已经有一段时间了。话虽如此,我并不一定需要代码交给我 - 只是指向我应该采取的正确方法以达到我的要求。
我的项目是一个简单的块游戏,玩家通过滑动来移动块(块以滑动的准确速度移动,没有加速)。我想要实现的是,当玩家在屏幕上滑动一个块时,我希望隐藏在屏幕外的精灵部分出现在屏幕的另一边并保持移动直到拖动动作停止(有点像旧的手机游戏,Snake II)。当精灵完全离开屏幕时,它现在应该在屏幕的相对侧的某处完全可见。 (因此屏幕就像精灵可以移动的无限循环)。例如,精灵在屏幕左侧可见40%,在屏幕右侧可见60%(在屏幕边界减半,0.x)。当精灵向左移动时,左边会看到35%,右边会看到65%。
解决这个问题的最佳方法是什么?我应该复制精灵,然后以相反的方式将新副本移动到屏幕上吗?或者用一个精灵和某种面具以某种方式可能吗?
非常感谢任何帮助。 (我现在不在家,但如果我的解释不清楚,我可以在以后添加示例代码和图片)
我正在使用Cocos2d的objective-c版本。
答案 0 :(得分:0)
我以前做过好几次,很简单。假设您的精灵可以在所有方向上移出屏幕,您需要总共4个相同的精灵。一个精灵是“主”精灵,即当精灵不在任何屏幕边界附近时始终可见的一个精灵。让我们称其他3为“奴隶”。
每一帧都会检查主精灵是否完全包含在屏幕中。一个简单的CGRectContainsRect测试。
如果未包含,则可以看到三个从属精灵,并按屏幕宽度,屏幕高度和屏幕宽度&偏移它们。高度分别。假设主精灵离开屏幕左下角。如果它在右上角离开,则需要减去屏幕宽度/高度。
现在一旦主人完全离开了屏幕,你需要将其位置偏移一次并再次隐藏奴隶精灵。例如,如果主控制器将屏幕向右移动,则必须从其x位置减去screen.width一次。
所以基本上你只需要确定主精灵是否接近任何边界,然后根据主精灵所在的象限(即左下,右上等)偏移奴隶精灵,然后偏移主精灵并禁用奴隶一旦完全离开了屏幕。
根据您的需要,您可能还需要将碰撞检查扩展到所有四个精灵,或者您可能决定要在完全离开屏幕时但是当它的位置不再在屏幕内时偏移主精灵。