【发布时间】:2015-07-31 05:42:20
【问题描述】:
我目前正在使用SpriteKit + UIScrollView + SKCameraNode 来创建一个滚动游戏。我目前正在尝试在垂直方向上反转UIScrollView 的方向,因为滚动视图似乎从直观的角度向后移动。
对此我的解决方案是将contentOffset 从滚动视图的开头放置到最大高度,并将相机的位置设置为另一个方向的 y 位置。
但是,当滚动到 (0, 0) 时,滚动在 (0, 320) 处停止。
这是滚动视图的代码:
let contentSize = CGSize(width: 1575, height: 760) //adjust depending on level
self.height = contentSize.height
scrollView.contentSize = contentSize
scrollView.contentOffset = CGPointMake(0, contentSize.height / 2)
这是滚动视图滚动时的代码:
let contentOffset = CGPointMake(scrollView.contentOffset.x, self.height - scrollView.contentOffset.y)
self.gScene.setContentOffset(contentOffset)
这里是设置内容偏移的代码:
self.camera!.position = CGPointMake(ogPos.x + contentOffset.x, ogPos.y + contentOffset.y)
所以相机现在可以正常工作并朝正确的方向滚动;但是,滚动的内容偏移量无缘无故地停留在 (0, 320) 处,并且它拒绝进一步向下滚动。如果您有任何想法,我很想听听他们的意见!谢谢!
编辑:我也尝试将 UIScrollView 的 contentSize 设置为负高度,但它根本无法滚动。
我刚刚发现它因视图大小而停止。
【问题讨论】:
-
您是否有任何理由使用
UIScrollView和SpriteKit而不是从场景控制器中制作所有内容? -
@aramusss 我正在使用
UIScrollView在SpriteKit中移动相机。另外,我刚刚注意到滚动视图卡在的位置会根据设备大小而变化......有没有更好的方法来滚动相机? -
尽管
SpriteKit和UIKit可以一起工作,但不建议将它们混合使用很多。您应该在SKScene中使用update:方法来更新背景和每隔一个SKNode,给人一种滚动的错觉。 -
@aramusss 我将如何跟踪玩家的触摸和滚动?我正在努力做到这一点,以便您可以用手指拖动,而不是无限滚动的背景/关卡。我只是想让相机根据滚动在场景中移动。
-
好的,现在我创建一个答案。
标签: ios swift uiscrollview sprite-kit swift2