iOS:使用Sprite Kit实现用户控制的相机“缩放”

4
我有一个包装Sprite Kit的工作中的2D平台游戏引擎。为了实现滚动世界,我正在遵循苹果公司在其高级场景处理文档中的指导:我的场景包含一个世界;该世界包含所有节点,包括相机节点。
现在我正在制作关卡编辑器,这也很顺利。这是我的问题:我无法弄清如何在关卡编辑器中“缩放相机”
我搜索并在Stack Overflow上找到了this question。使用DogCoffee的答案,我能够实现看起来正确但会导致错误精灵节点位置(在我的编辑器中,当缩放时,我不能再选择精灵)的缩放行为。 我应该如何缩放我的相机?或者,我应该如何在缩放操作后调整我的对象位置?
如果您有经过测试的解决方案,我洗耳恭听。我的意思是...眼睛。是的。
1个回答

4

好的,当你忽略得分较低的答案时会发生什么,这就是结果。重新访问我上面链接的同一个问题,我尝试了JKallio的答案并使其工作。

以下是我实现的简要概述(重新设计以避免我的个人类名):

在我的UI管理器中:

- (IBAction)pressedZoomIn:(id)sender
{
  CGFloat newZoom = [EditorState zoom] - 0.1f;
  [EditorState setZoom:newZoom];
  [EditorState currentScene].size = CGSizeMake([EditorState currentScene].size.width * newZoom, 
                                               [EditorState currentScene].size.height * newZoom);
}
- (IBAction)pressedZoomOut:(id)sender
{
  CGFloat newZoom = [EditorState zoom] + 0.1f;
  [EditorState setZoom:newZoom];
  [EditorState currentScene].size = CGSizeMake([EditorState currentScene].size.width * newZoom, 
                                               [EditorState currentScene].size.height * newZoom);
}

这个解决方案确实可以在缩放控制上给你一些“惯性”,但对于我正在做的事情来说它是有效的。

1
所以我建议您进行一项更改,即保存初始场景大小,并在应用缩放时乘以初始场景大小。否则,大小可能会失控。 - Spencer Hall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接