swift - 通过触摸在场景中四处移动

标签 swift sprite-kit

我的游戏(不是主场景)中有一个场景 (SpriteKit),我想在其中显示一个非常大的 map 。我正在尝试让该场景根据触摸向各个方向滚动,并能够与我放置的地标进行交互。我运气不太好,正在寻求一些建议。

我得到的最接近的是使用 UIPanGestureRecognizer,我必须将其添加为 UIView 而不是 SKNode。虽然我能够滚动图像(实际上是滚动的图像)。我似乎没有办法以可以与它们交互的方式添加对象。

我还尝试了一个摄像头示例,该摄像头本应跟随我用手指滑动,但也没有用。我被困住了,我很想听听你的建议!

最佳答案

经过数小时的搜索和测试,我能够使用 UIPanGestureRecognizer 和通过向场景添加相机 View 的单独测试获得可行的解决方案。随相机移动的能力可能是更好的解决方案,因为我可以用手指在 map 上滚动并单击 SPSpriteNodes。使用 UIPan 选项只是四处移动我的 View ,我可以将它拖出屏幕。此外,我似乎无法与附加到被拖来拖去的 View 的 SKSpriteNodes 进行交互。我将在下面发布我正在使用的相机代码。现在我只需要弄清楚如何添加约束!

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch : UITouch = touches.first!
    let positionInScene = touch.location(in: self)
    let previousPosition = touch.previousLocation(in: self)
    let translation = CGPoint(x: (positionInScene.x) - (previousPosition.x), y: (positionInScene.y) - (previousPosition.y))

    panForTranslation(translation)
    //print(boardCamera.position)

}

func panForTranslation(_ translation: CGPoint) {
    let position = boardCamera.position
    let aNewPosition = CGPoint(x: position.x - translation.x, y: position.y - translation.y)
    boardCamera.position = aNewPosition
}

关于swift - 通过触摸在场景中四处移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45178471/

相关文章:

ios - SpriteKit : Using SKTextureAtlas causes incorrect Physics Body

ios - swift - 跳跃时暂停动画

swift - 如何使用 Parse 修复此错误

swift - 设置 DarkTheme 没有效果 Braintree iOS v4 SDK

ios - 从服务器播放视频 url 而无需流式传输

ios - NSArray 元素无法匹配 Swift 数组元素类型预期 NSMutableArray 但发现 __NSDictionaryI :

swift - Swift 中的随机值

ios - 知道 skspritenode 已经完全移动到另一个 skspritenode 上

ios - 如何搜索经过身份验证的用户 Firebase iOS Swift

ios - 平移时正确定位相机