在 Spritekit 的 SKShapeNode 中将特定点居中

Center a specific point in an SKShapeNode in Spritekit

我正在 iPad 上为弹球游戏构建 2D 地图编辑器。为了实现缩放 in/out,我决定缩放 pinball table 及其内容,效果很好。问题是我希望缩放的中心(即场景的中心)保持在中心。

现在,如果我将 table 放大(放大),table 会放大并占据场景中的所有 space,但中心没有任何东西在缩放开始时处理中心。 (见下图)

作为另一个例子,如果我放大(table 被放大)并且我看到了 table 的一部分(假设是右边框)并且我缩小了, table 将从它的中心按比例缩小,我根本不会在场景中看到 table,即使我在场景中心有一部分 table。这不是使用友好的,我希望在中心始终有相同的 table 部分。

谢谢你的帮助。我对这个有点迷茫。

PS:我正在使用 UIPinchGesture 来缩放我的 SKShakeNode,这是我的弹球 table。

如果我没理解错的话,当你缩放时,你想放大屏幕中心的位置,而不管你的 table 在哪里。为此,您需要获取与整个场景中心的距离(通常您想尝试将其设为 (0,0),但我相信 sprite 套件默认值为 (scenewidth/2,sceneheight/2), 到矩形的中心,缩放这个距离,然后将矩形的中心移动到新的点。所以如果我的屏幕中心是 (0,0) 而 table 的中心在 ( 0,1) 进行 2 倍缩放,我会将距离 (0,1) 乘以 2 (0,2) 并将矩形的中心放置在 (0,2) 处,现在使用 2 倍大小的矩形(通常你会拿你的对象,将它平移到原点,缩放它,然后在缩放距离处将它平移回来,但我相信 sprite kit 缩放已经为你做了这个,减去平移缩放距离)