在Spritekit

时间:2015-11-28 09:09:06

标签: ios sprite-kit position scaling pinchzoom

我正在iPad上构建一个2D地图编辑器,用于弹球游戏。为了实现放大/缩小,我决定缩放弹球桌及其内容,这非常有效。问题是我希望缩放的中心(这是场景的中心)留在中心。

现在,如果我向上缩放表格(放大),表格会向上缩放并占据场景中的所有空间,但中心与缩放开始时的中心无关。 (见下图)

enter image description here

另一个例子,如果我放大(桌子放大了)我看到桌子的一部分(让我们说右边框)然后我缩小,桌子将从它的中心缩小,我即使我在场景的中心有一部分桌子,也不会在场景中看到桌子。这不是友好的使用,我想在中心总是有相同的表格部分。

无论如何,谢谢你的帮助。我在这一点上有点迷失。

PS:我正在使用UIPinchGesture扩展我的SKShakeNode,这是我的弹球桌。

1 个答案:

答案 0 :(得分:2)

如果我正确理解这一点,当您进行缩放时,无论桌子在哪里,您都希望放大屏幕中心的位置。要实现这一点,你需要从整个场景的中心得到距​​离(通常你想尝试使它是(0,0),但我相信精灵套件默认是(scenewidth / 2,sceneheight / 2),到矩形的中心,缩放此距离,然后将矩形的中心移动到新点。所以如果我的屏幕中心是(0,0)并且表格的中心是(0,1)做2x缩放,我会得到距离(0,1)乘以2(0,2)并将矩形的中心放在(0,2)现在用2x大小的矩形(通常你会拿你的对象,翻译它到原点,缩放它,然后将它转换回缩放距离,但我相信精灵工具包缩放已经为你做了这个,减去了缩放后缩放的距离)