iOS Spritekit滚动菜单

时间:2018-08-02 04:55:12

标签: ios sprite-kit skaction skscene

我正在为SpriteKit游戏实现水平滚动菜单,并且对如何执行此操作感到困惑。我的策略最初是将所有菜单项添加到场景中,然后根据滑动水平移动摄像机。

问题是菜单是旋转的/圆形的(最后一个项目链接到第一个,等等),因此即使我无限地重复菜单项目,在不断地向一个方向滑动后,我仍然可以想象达到一个坐标极限,并且该应用程序将崩溃。

我的下一个解决方案是在摄像机视图中添加一个菜单项,一个菜单项添加到左侧,一个菜单项添加到右侧。然后,在滑动时,正确的项目将通过SKAction进入我的相机视图,原始项目将移开。然后,我将删除距离相机最远的节点,然后向我滑动的方向向场景中添加下一项。这样,我的x范围(以磅为单位)只能是-displayWidth到displayWidth。问题是我需要同时对所有菜单项进行动画处理,并且由于它们是单独的节点,因此我没有看到同步其动画的方法。

我还需要检查菜单项上元素的位置,并在到达屏幕边框时更改其着色器。 SKActions似乎阻止了SKScene的更新方法,因此我理想地尝试避免使用SKActions

我在这里缺少任何可行的策略吗?

2 个答案:

答案 0 :(得分:2)

由于这只是一个菜单,所以效率低下也是可以的。

您要做的是将菜单克隆2次(因此共有3次)。您将其中一个克隆放置在左侧,然后将一个放置在右侧。

然后将所有这三个添加到父SKNode中。现在,您应该有一个SKNode,其中带有长字符串的3个菜单项。确保您的锚点为(0.5,0.5)

然后运行动画以在父级SKNode上向左或向右平移,条件是每当通过原始主菜单的边缘时,您都将沿菜单宽度的相反方向跳转。

因此,我们的菜单宽度为400(-199,200)点,屏幕宽度为300点(-149,150)。父点-200(菜单点200或菜单的右侧)与屏幕点-150对齐后,您可以将父点移动到200(因此菜单点是-200或菜单的左侧)。

由于要移动父节点,因此所有克隆都将照此进行,您只需要执行1个操作即可。

答案 1 :(得分:0)

我建议使用UIKit代替SpriteKit创建这样的菜单。 UICollectionView应该适合这样的任务。