【问题标题】:Center a specific point in an SKShapeNode in Spritekit在 Spritekit 中的 SKShapeNode 中将特定点居中
【发布时间】:2015-11-28 09:09:06
【问题描述】:

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

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

作为另一个例子,如果我放大(表格被放大)并且我看到表格的一部分(比如说右边框)并且我缩小,表格将从它的中心缩小并且我在场景中根本看不到桌子,即使我在场景中心有一部分桌子。这对使用不友好,我希望始终将桌子的同一部分放在中间。

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

PS:我正在使用 UIPinchGesture 来缩放我的 SKShakeNode,即我的弹球桌。

【问题讨论】:

  • 你现在是如何设置它的?场景 -> GameNode (Pinball Table) -> 所有弹球台内容?

标签: ios sprite-kit position scaling pinchzoom


【解决方案1】:

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

【讨论】:

  • 谢谢。我已经完全做到了这一点,但没有奏效。看到你的回答后我又试了一次,它奏效了。我想我上次犯了很多错误。无论如何,谢谢,这是正确的答案(现在完美运行)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多