将 UIView 中的位置转换为 SKScene

2024-01-09

我想在 UIView 中使用 touchBegan 功能,并且应该触发 SKScene 方法。一切都几乎正常,除了我的 SKNode 的起始位置与 UIView 中的触摸不同之外。我在这里读到:Swift 中令人困惑的反向触摸事件 https://stackoverflow.com/questions/41172551/confusing-reversed-touch-event-in-swift但是他们没有给出如何将 UIView 触摸手势转换为与触摸位置对应的 SKScene 触摸手势的解决方案。这有效:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
    var currentPoint = touch.location(in: scene)
    executeSpawningStar(startPosition: currentPoint)
    }
}

但是我在它上面放了一个UIView,这个功能就不起作用了。当我把它改成这样时:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
    var currentPoint = touch.location(in: newUIView)
    executeSpawningStar(startPosition: currentPoint)
    }
}

产卵看起来非常奇怪。产卵星的坐标不正确。如何将正确的坐标从 UIView 传输到 SpriteKit 设置以匹配触摸手势的真实位置?


好消息! SKView 具有与 SKScene 坐标相互转换的方法。

func convert(_ point: CGPoint, from scene: SKScene) -> CGPoint
func convert(_ point: CGPoint, to scene: SKScene) -> CGPoint

所以你可以这样做:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        var currentPoint = touch.location(in: newUIView)
        currentPoint = gameScene.convertPoint(fromView: currentPoint)
        executeSpawningStar(startPosition: currentPoint)
    }
}

https://developer.apple.com/reference/spritekit/skview/1520328-convert https://developer.apple.com/reference/spritekit/skview/1520328-convert https://developer.apple.com/reference/spritekit/skview/1519847-convert https://developer.apple.com/reference/spritekit/skview/1519847-convert

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 UIView 中的位置转换为 SKScene 的相关文章

随机推荐

  • 如何在 Android 中将 ImageButton 与背景图像正确对齐?

    在使用 XML 的 Android UI 设计中 如何将 ImageButton 与 Activity xml 文件的背景完全对齐 假设我有两张图像 一张用作活动的背景图像 第二张用作图像按钮源 这是背景图像 https i stack i
  • 如何在 Python 中获得人类可读的时区名称?

    在我正在从事的一个Python项目中 我希望能够获得以下形式的 人类可读 时区名称美洲 纽约 对应系统本地时区 显示给用户 我见过的每一段访问时区信息的代码都只返回数字偏移量 0400 或字母代码 EDT 有时两者都返回 是否有一些 Pyt
  • NEAT 错误 - AttributeError:“tuple”对象没有属性“connections”

    我目前正在尝试创建一个 NEAT 算法来解决 FlappyBird 但在运行我的代码时遇到错误 参见标题 目前我已经设置了我的run功能和我的eval genomes功能 我已经简化了它们以删除pygame并试图将其保留在neat pyth
  • 如何使用vba禁用单元格中的更改?

    我正在使用以下代码 此代码的示例如下 如果我在单元格 A1 中输入任何值 单元格 B1 将显示时间戳 Private Sub Worksheet Change ByVal Target As Excel Range With Target
  • “单例”工厂,好还是坏?

    我有很多 抽象 工厂 它们通常作为单例实现 通常是为了方便 不必将它们传递给实际上与使用或了解这些工厂无关的层 大多数时候我只需要在启动时决定哪个工厂实现其余的代码程序 也许通过一些配置 它看起来例如喜欢 abstract class Co
  • 使用 Mips Assembly 读取和打印 txt 文件中的内容

    我正在尝试读取并打印 txt 文件中的内容 稍后我还想从 mips 读取转储的文件 我看到代码 看起来没问题 但没有输出任何内容 data myFile asciiz teste txt filename for input buffer
  • 从 RecyclerView 中删除行

    我在这篇文章的帮助下以某种方式实现了 recyclerview 现在我的要求是在运行时从此回收视图中删除一行 link http treyrobinson net blog android l tutorials part 3 recycl
  • 首先使用 Entity Framework 6.0 代码创建与 LINQPad 的 DbContext 连接时出现问题

    我正在使用 LINQPad v4 51 03 并尝试从 Entity Framework 6 0 6 1 1 中的代码优先实现创建 DbContext 连接 public partial class MyEntities DbContext
  • Google Apps 脚本 - 单元格中的 .setValue 基于 for 循环匹配

    我试图从数据范围中获取值 循环数据 匹配该数据中的值 然后根据匹配值更新位于几列上方的单元格 我能够找到要匹配的值 但我很难理解如何更新几列的单元格 下面是我到目前为止得到的代码 减去 setValue 部分 var trackingSS
  • 数据表中的条件差异计算

    我有一百万行长data table大约有20个柜台式的柱子 这些列显示各种存储系统操作的计数器随时间的增加 然而 有时 受监控系统上的计数器会重置 并且单个观测值低于前一个观测值 我需要计算一个opsdiff列 其中包含基于列的相同类型的后
  • iOS MKMapView 缩放以显示所有标记

    我正在与MKMapView并在地图上标出了几个点 我已经用过MKCoordinateRegion and MKCoordinateSpan围绕其中一个点启用缩放等 但这不是我想要的 我正在尝试使用类似于 Javascript 缩放到边界功能
  • 如何在 Go 中编写多行字符串?

    Go 是否有类似于 Python 的多行字符串的东西 line 1 line 2 line 3 如果不是 那么编写跨多行字符串的首选方式是什么 根据语言规范 http golang org doc go spec html String l
  • 如何在 Scala/Spark 中从多个 DataFrame 创建包含多个工作表的 Excel 文件?

    In Scala Spark应用程序我创建了两个不同的DataFrame 我的任务是为每个 DataFrame 创建一个包含两个工作表的 Excel 文件 我决定使用火花Excel https github com crealytics s
  • 包含非托管对象的 ConcurrentBag 的完成

    我在正确处理 Dispose Finalization 时遇到问题ConcurrentBag包含非托管对象 运行下面的代码 通常 会产生一个ObjectDisposedException Cannot access a disposed o
  • 在 SwiftUI 中切换视图的最佳方式是什么?

    我尝试了几种在 SwiftUI 中切换视图的选项 然而 每一个都存在一些问题 比如多次来回切换时会出现时间滞后等问题 我正在尝试找到使用 SwiftUI 切换视图的最佳和最干净的方法 我只是想制作一个多视图用户界面 In View1 swi
  • 预定的网络作业

    我正在创建一个新的 Azure WebJob 项目 它似乎是可以作为 Web 作业运行的控制台应用程序的优化版本 我希望这项工作根据时间表运行 但在Main 方法 见下文 微软为您提供了host RunAndBlock 使作业能够连续运行
  • 在 iOS 中创建 RTF 、 DOC 或 DOCX

    我想使用 iOS 应用程序创建以下文件类型之一 RTF DOC 或 DOCX 用户应该能够写文字并且添加图像到它 UI 的构建不是问题 问题只是文件的创建 有没有最佳实践可以做到这一点 第三方框架是一种选择 但我想自己做 Thanks 我可
  • 即使捕获了鼠标,如何才能获取鼠标位置的元素?

    有没有办法获取鼠标位置的元素 我正在使用 Mouse DirectlyOver 仅当鼠标未被捕获时它才能正常工作 如果鼠标被捕获 它会获取鼠标捕获的元素 该元素不一定是鼠标所在位置的元素 事实上 MSDN 文档说 如果某个元素具有鼠标捕获功
  • 哪个是好的开源用户管理系统? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 UIView 中的位置转换为 SKScene

    我想在 UIView 中使用 touchBegan 功能 并且应该触发 SKScene 方法 一切都几乎正常 除了我的 SKNode 的起始位置与 UIView 中的触摸不同之外 我在这里读到 Swift 中令人困惑的反向触摸事件 http