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