我怎样才能制作一个离开屏幕并重新出现在对面的精灵? (100% 的精灵总是可见的)

How can I make a sprite that goes off screen and reappears on the opposing side? (100% of sprite always visible)

我对 Cocos2d 有一些经验,但我也已经有一段时间没有使用它了。话虽这么说,我不一定需要交给我的代码 - 只是指向我应该采取的正确方法来实现我的要求的指针。

我的项目是一个简单的积木游戏,玩家通过滑动来移动积木(积木以滑动的精确速度移动,没有加速度)。我想要实现的是,当玩家从屏幕上滑动一个块时,我希望隐藏在屏幕外的精灵部分出现在屏幕的另一边缘并继续移动直到拖动动作停止(有点像旧的手机游戏,Snake II)。当精灵完全离开屏幕时,它现在应该在屏幕另一侧的某个地方完全可见。 (所以屏幕就像一个无限循环,精灵可以继续移动)。例如,精灵在屏幕左侧有 40% 可见,在屏幕右侧有 60% 可见(在屏幕边界减半,0.x)。随着精灵向左移动,它将在左侧变为 35% 可见,在右侧变为 65%。

解决这个问题的最佳方法是什么?我应该复制精灵然后以相反的方式将新副本移动到屏幕上吗?或者这是否可以通过一个精灵和某种面具实现?

如有任何帮助,我们将不胜感激。 (我现在不在家,但如果我的解释不清楚,我可以稍后添加示例代码和图像)

我正在使用 Cocos2d 的 objective-c 版本。

我以前做过几次,很简单。假设你的精灵可以全方位的移动到屏幕外,你一共需要4个相同的精灵。一个精灵是 "master" 精灵,即当精灵不靠近任何屏幕边框时始终可见的一个精灵。我们称其他 3 个为 "slaves".

你检查主精灵是否完全包含在屏幕内的每一帧。一个简单的 CGRectContainsRect 测试。

如果不包含,则使三个从精灵可见,并分别按屏幕宽度、屏幕高度和屏幕宽度和高度偏移它们。假设主精灵在左下角离开屏幕。如果它在右上角离开,则需要减去 screen width/height.

现在一旦主人完全离开屏幕,您需要偏移一次它的位置并再次隐藏奴隶精灵。例如,如果主屏幕向右离开屏幕,则必须从其 x 位置减去一次 screen.width。

所以基本上你只需要确定主精灵是否在任何边界附近,然后根据主精灵所在的象限(即左下角、右上角等)偏移从精灵,然后偏移主精灵并在它完全离开屏幕后禁用从属。

根据您的需要,您可能还需要将碰撞检查扩展到所有四个 sprite,或者您可能决定不在主 sprite 完全离开屏幕时偏移它,而是在它的位置不再位于屏幕.