在 SceneKit 游戏中为 SCNNode 制作 SCNConstraint (LookAt) 动画以使过渡逐渐进行

2024-04-11

一般来说,当你想让游戏中的角色面对镜头时,可以使用 SCNLookAtConstraint,这实际上也对我很有帮助。

Below, 我的对象是我试图根据约束定向的节点。 “Enemy”指的是场景中的某个节点,pointOfView 是场景的视角。当我点击 my_object 时,它应该会注视敌人一秒钟,然后回到我的视角。

设置 LookAtConstraint 以便“对象”观察“敌人”一秒钟。

my_object.constraints?.removeAll()
let targetNode = sceneView.scene.rootNode.childNode(withName: (chosenScenarioForChallenge?.shape)!, recursively: true)
let lookAt = SCNLookAtConstraint(target: targetNode)
lookAt.isGimbalLockEnabled = true
my_object.constraints = [lookAt]                    
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(resetObject), userInfo: nil, repeats: false)

在查看“敌人”节点后重置对象以查看我的观点

@objc
func resetObject() {
    my_object.constraints?.removeAll()
    let targetNode = sceneView.pointOfView
    let lookAt = SCNLookAtConstraint(target: targetNode)
    lookAt.isGimbalLockEnabled = true
    my_object.constraints = [lookAt]
    }

我的问题是,我不希望约束条件发生突然的变化。我希望它能够平滑,因此我想将动画融入其中。查看 SCNAction 和 SCNAnimation 后,我未能找到与约束相关的任何内容。由于约束动态更新位置,我可以理解 SCNAction.move(to/ by: ) 等不起作用。最终,当我点击时,我的对象应该开始逐渐查看敌人节点,1-2 秒后,它应该回来查看我的视点,这也是逐渐的。

请注意,我不希望角色从技术上看镜头,因此我使用 SCNLookAtConstraint,而不是 SCNBillboardConstraint。

指针会有所帮助,TIA。


the target https://developer.apple.com/documentation/scenekit/scnlookatconstraint/1468677-target属性是读写的,因此您应该能够重用SCNLookAtConstraint实例(而不是创建一个新实例)并交换目标。

Edit

The influenceFactor https://developer.apple.com/documentation/scenekit/scnconstraint/1468692-influencefactor约束的允许在节点的当前变换和约束计算的变换之间实现更平滑的动画。

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

在 SceneKit 游戏中为 SCNNode 制作 SCNConstraint (LookAt) 动画以使过渡逐渐进行 的相关文章

  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 如何在 Apple Watch Extension/App 和 iOS App 之间建立通信通道

    我正在探索 WatchKit SDK 当我有 WatchKit 应用程序时 是否可以在 WatchKit 应用程序上从 iPhone 应用程序设置值 例如文本 设置 我可以从 iPhone 应用程序调用 WatchKit 应用程序扩展中的函
  • 这个错误是无效上下文0x0吗?

    我在ViewDidLoad中编写了以下代码 Implement viewDidLoad to do additional setup after loading the view typically from a nib void view
  • Swift 3 错误:[_SwiftValue pointSize] 无法识别的选择器发送到实例

    我刚刚将我们的项目迁移到 swift 3 发现由于一个问题导致大量崩溃 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 SwiftValue pointSize 发送到实例的无法识别的选择器 该
  • 暂停视频录制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试创建一个应用程序 用户可以在其中从相机录制视频 该应用程序的功能之一必须是文件录制中的暂停 例如 用户通过按 开始 按钮开始
  • UITextFieldDelegate 与 UITextField 控件事件

    如果我想处理 UITextField 的更改 例如用户在其中键入 看起来这可以通过将委托分配给该文本字段 然后让委托实现 shouldChangeCharactersInRange 来完成 或者通过将目标添加到文本字段并处理 UIContr
  • 如何使用正则表达式将字符串分成相同字符的组?

    我有一个这样的字符串 var string AAAAAAABBBCCCCCCDD 并喜欢将字符串分割成这种格式的数组 same characters gt same group 使用正则表达式 Array AAAAAAA BBB CCCCC
  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • UICollectionView 未出现

    我正在尝试设置UICollectionView 以编程方式在我的视图控制器中扩展UIViewController 由于某种原因 我的收藏视图根本没有显示 以下是我所拥有的 为什么没有出现 我将它连接到委托和数据源并将其添加为子视图self
  • Swift getnameinfo IPv6 结果不可靠

    我有以下扩展sockaddr extension sockaddr Indicates if this is an IPv4 address var isIPv4 Bool return sa family UInt8 AF INET In
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • FireMonkey iOS RAD Studio XE2 - 在从 URL 加载的表单上显示图像

    是否可以将 TImage 放置在 iOS 的 FMX 表单上 并将图像 jpg 从 URL 加载到此 TImage 中以在 iOS 应用程序中显示 我尝试过但没有成功 任何正确方向的提示或指出都会受到赞赏 将 TButton TImageC
  • Swift 中具有透明背景的按钮边框

    我怎样才能做一个UIButton边框看起来像下图 入门 按钮一样具有透明背景吗 我应该如何使用情节提要来实现这一点 或者如何以编程方式实现这一点 设置backgroundColor to clearColor使按钮透明 例如尝试下面的代码
  • Objective C UIImagePNGRepresentation内存问题(使用ARC)

    我有一个基于 ARC 的应用程序 它从 Web 服务加载大约 2 000 个相当大 1 4MB 的 Base64 编码图像 它将 Base64 解码后的字符串转换为 png图像文件并将其保存到磁盘 这一切都是在一个循环中完成的 我不应该有任
  • 使用 UIImageJPEGRepresentation 时,compressionQuality 应该是多少?

    我想对用户库中的照片应用滤镜 然后将其写回磁盘 我在用着UIImageJPEGRepresentation 该函数需要一个UIImage and a compressionQuality值介于 0 0 和 1 0 之间 因为我想保留原始质量
  • 在 Instruments 中查找内存泄漏行

    我是 iOS 中的仪器新手 我正在尝试使用 Xcode 4 5 2 并按照本教程查找仪器中的内存泄漏 http soulwithmobiletechnology blogspot sg 2011 04 how to check memory
  • Swift 中通过不同类调用委托方法

    我正在获取 JSON 菜单 一旦 JSON 返回 我想运行 menuReady 来更新表的内容在 SomeTableViewController 类中 但下面的代码似乎不起作用 AIM Run 菜单就绪 JSON 返回后更新内容 PROBL
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • WCF 测试客户端是否有任何替代方案[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有 WCFTestClient 的任何开源 或非 替代品 WCFTestClient 有很多限制 使其难以使用 例如 它不支持实体框架
  • 强制执行 Maven 3 - 何时使用 Maven 强制执行器插件?何时使用 pom 先决条件元素?

    强制执行 Maven 3 的两种主要方法似乎是 maven enforcer plugin 以及 pom xml
  • 在 Eclipse 中以编程方式选择工作集

    我想实现以编程方式选择工作集的功能 我尝试使用以下代码 IWorkingSetManager wsMgr PlatformUI getWorkbench getWorkingSetManager IWorkingSet ws wsMgr g
  • ffmpeg strftime 对 Windows 没有影响

    我正在尝试使用 ffmpeg 自动标记输出文件的时间戳 这是我的测试命令 ffmpeg exe y loglevel 99 i test mp3 strftime 1 Y ogg 我期望一个名为2020 ogg 然而只得到了 Y ogg 换
  • 动态服务器时间

    据我了解 我无法使用脚本中的 settimeout 在 IE 中获取动态服务器时间 我发现了这个例子 function timeExam ajax url inc clock php success function data clock
  • 当 localStorage 包含在 .module 定义中时,为什么我不能在 .config 中使用它?

    我有以下内容 var app angular module app ui router admin home questions ngResource LocalStorageModule config sceProvider stateP
  • 如何将单词与 C# 的 contains 函数精确匹配?

    我试图通过 C 读出脚本并确定它们是否包含某些单词 但这些单词应该是相同而不是只包含我正在寻找的内容 有没有办法使用contains 功能 挑出单词 并检查它是否与确切的单词相同 我怎样才能确定两者是否contains and 与搜索词 目
  • 按位运算的替代方法

    设想 我说有 4 个复选框 用户可以以任意组合选择这些复选框 他们也有权不选择任何一个复选框 我必须将这 4 个选项存储到一列中 我认为最好的选择是使用二进制表示形式存储 option1 has the constant value 1 o
  • SASS 3.2 媒体查询和 Internet Explorer 支持

    我最近实施了这项技术 http thesassway com intermediate responsive web design in sass using media queries in sass 32与SASS 3 2一起使用 co
  • py2app setup.py使用问题

    好的 我正在尝试使用 py2app 为我的项目生成发行版 我仍然不确定我是否掌握了它的窍门 所以我的 setup py 看起来像这样 This is a setup py script generated by py2applet Usag
  • 使用 Kafka Streams 进行 OpenTracing - 如何?

    我正在尝试将 Jaeger 跟踪集成到 K Streams 中 我计划将跟踪添加到几个最重要的管道中 并且想知道将 Traceid 从一个管道传递到另一个管道的好方法是什么 这是我到目前为止所做的 在流处理管道开始时 我启动一个服务器范围并
  • AudioKit - 临时文件太大

    我正在使用 AudioKit 的 AKNodeRecorder 来录制音频 录制音频时 它会在临时目录中生成 CAF 文件 如果我们使用 exportAsynchronously 保存它 它会在文档目录中创建一个扩展名为 m4a 的新文件
  • H2“runscript”命令将所有表名变成大写

    我有一个 sql 脚本 它只是模式定义 该脚本是 mysql 哑巴的修改版本 去掉 h2 不喜欢的坏字符 脚本运行并将架构插入到 h2 数据库中 但问题是所有数据库名称均为大写 xyz 转换为 XYZ 我需要它们保持小写 因为我的应用程序正
  • android中C++与Java的通信

    我想在 Android 的本机代码中从 C 文件调用 java 方法 我知道 我们可以从 JNI 实现这一点 但在这种情况下 我需要从 Java 发起调用 这不符合我的要求 我需要从 C 中的 main 函数调用用 Java 编写的方法 那
  • Android:Kotlin:自定义 webView - 无法作为函数调用。找不到函数“invoke()”

    我有一项活动 联系活动 kt 仅包含一个 webView 组件 使用 Kotlin 编写活动 我想用我的自定义 webView 替换 webView ObservableWebView java 所以这里的代码 我的活动 kt class
  • 在裸机上使用 Kubernetes 1.6 安装插件的说明?

    我按照此文档从头开始设置了我的 kubernetes 集群 https kubernetes io docs getting started guides scratch https kubernetes io docs getting s
  • 在 Foundation 中动态设置 Sass 变量

    如何在 Foundation 中动态设置 Sass 变量 根据他们的文档 http foundation zurb com docs components tables html 您可以借助一些 Sass 变量来自定义表格 settings
  • PHP MySQL 数据库奇怪字符

    我正在尝试输出存储在 MySQL 数据库中的产品信息 但它写出了一些奇怪的字符 例如内部带有问号的菱形 我认为这可能是编码 UTF8问题 但我已经指定了我想要的编码 这是正确的吗 我应该检查什么 如果只有来自数据库的数据包含奇怪的字符 请使
  • 如何使 TinyMCE 在 UpdatePanel 中工作?

    我正在尝试做许多人似乎能够做到的事情 但我无法实施任何解决方案 这TinyMCE http tinymce moxiecode com 控件在 asp net 表单中工作得很好 直到您用 UpdatePanel 将其括起来 然后在回发后中断
  • 在 SceneKit 游戏中为 SCNNode 制作 SCNConstraint (LookAt) 动画以使过渡逐渐进行

    一般来说 当你想让游戏中的角色面对镜头时 可以使用 SCNLookAtConstraint 这实际上也对我很有帮助 Below 我的对象是我试图根据约束定向的节点 Enemy 指的是场景中的某个节点 pointOfView 是场景的视角 当