微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

touchesMoved 有一个奇怪的问题,位置与触摸屏幕的位置不匹配

如何解决touchesMoved 有一个奇怪的问题,位置与触摸屏幕的位置不匹配

我正在尝试制作一个游戏,我在其中拖动宝石。

层次结构是:

GameScene(这是视图控制器)
gemBase,保存宝石(浅灰色)SKSpriteNode
宝石 SKSpriteNode

这些 gems 是 gemBase 的子级,它是 GameScene 的子级。

当 gemBase 为 0,0 时,当我拖动宝石时一切正常。他们在我触摸屏幕的同一个地方。但我想提供一个左手特性,我将 gemBase 偏移到屏幕的正确大小。所有宝石都会自动随着底座移动,所以我不需要重新计算它们的位置。

但是,当我尝试移动宝石时,它们会偏移到我正在触摸屏幕的位置的右​​侧。它们与我移动 gemBase 的偏移量一样多。

以下是我处理 touchesMoved 的唯一代码(在 GameScene 中)

我必须转换 touch.location 吗?

override func touchesMoved(_ touches: Set<UITouch>,with event: UIEvent?){
    super.touchesMoved(touches,with:event)
    guard touches.first != nil else { return }
    if toggleHigh {highliteGem(theGem: myGems[0],clearall: true)}
    if let touch = touches.first,let node = myGV.currentGem,node.isMoving == true {
        let touchLocation = touch.location(in: self)
        node.moved    = true
        node.position = touchLocation
        node.isMoving = true
        node.inSlot = false
        //addTrailToTwinkle(theNode: node)
    }
}

Left vs. Right

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。