我的游戏基于两个屏幕(A& B)并排,但设备屏幕一次只能显示其中一个。
A例如在位置(0,0)并且B在(320,0)
我尝试了两种解决方案,从A切换到B:
现在,如果我想通过动画从A到B,那么必须调整这两个解决方案:
使用SKAction
[Main runAction:[SKAction moveToY:-320 duration:0.1]];
通过update
方法
if(anchorY > -1) anchorY -= 0.1;
这两个解决方案有效(尽管线性SKAction :: timingMode不能正确渲染线性平移),但我想知道哪个是优化和优雅方面最好的。欢迎提供文件;)
编辑:
显然,我的问题不明确(可能是由于我的英语水平)。
简而言之,我的问题是:滚动场景的最佳做法究竟是什么?
答案 0 :(得分:2)
我很惊讶(0,-1)并没有引发一个巨大的异常。根据文档,您可以获得从0到1的范围。这可能会在将来引发问题。请参阅文档here
改变你的位置听起来像是一种更优雅的处理方式。然而,在十分之一秒的时间内将其改为负-320是相当快的,并且可以解释为什么它看起来很有趣。此外,如果你不确定你只是打电话,一旦看起来很奇怪。我会确保它只被调用一次并且可能使用bool来切换它是否应该移动而不是检查位置。
如果你要从一个屏幕到另一个屏幕来回走动,这可能是一个不错的解决方案。但是,如果您希望将其扩展为更大的地图,您将要多次转换到新的屏幕,我会建议采用不同的方法。就像在需要时在屏幕外创建新节点并转换父节点一样,然后关闭旧节点。
我希望有所帮助。
修改
现在问题是"什么是滚动场景的最佳做法"。
我会推荐评论中提到的LearnCoco2D以及我在原始答案中所提到的内容。
过去我以类似的方式构建了我的场景,并根据更新循环中的玩家位置处理了场景位置。当他在地图上走动时,我能够将玩家保持在屏幕的中心位置。可能会离开主题,但这是我找到处理从我的经验滚动场景的最佳实践。我正在处理的项目可以查看here
我希望能回答你的问题。