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 (将#修改为@)