首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift/IOS: SCNAction完成后,SCNNode似乎回到了原来的位置,但它的实际位置被SCNAction改变了

Swift/IOS中的SCNAction是SceneKit框架中用于创建和管理动画效果的类。它可以应用于SCNNode对象,用于改变节点的位置、旋转、缩放等属性。

当使用SCNAction完成后,SCNNode似乎回到了原来的位置,但实际上它的位置已经被SCNAction改变了。这是因为SCNAction只是在动画过程中改变了节点的属性,动画结束后节点的属性会恢复到动画开始前的状态。

要解决这个问题,可以使用以下方法之一:

  1. 在创建SCNAction时,设置节点的属性为动画结束后的目标值。例如,如果要改变节点的位置,可以在创建SCNAction时设置节点的position属性为目标位置。
  2. 在SCNAction完成后,手动更新节点的属性为动画结束后的目标值。可以通过设置节点的position属性为目标位置来实现。

以下是一个示例代码,演示了如何使用SCNAction改变节点的位置,并在动画完成后保持节点在目标位置:

代码语言:txt
复制
// 创建一个节点
let node = SCNNode()
// 设置节点的初始位置
node.position = SCNVector3(x: 0, y: 0, z: 0)

// 创建一个移动动画
let moveAction = SCNAction.move(to: SCNVector3(x: 1, y: 1, z: 1), duration: 1.0)

// 动画完成后更新节点的位置为目标位置
let updatePositionAction = SCNAction.run { _ in
    node.position = SCNVector3(x: 1, y: 1, z: 1)
}

// 创建一个动画序列,先执行移动动画,再执行更新位置动画
let sequenceAction = SCNAction.sequence([moveAction, updatePositionAction])

// 执行动画
node.runAction(sequenceAction)

在这个示例中,首先创建了一个节点,并设置其初始位置为(0, 0, 0)。然后创建了一个移动动画,将节点移动到目标位置(1, 1, 1)。接着创建了一个更新位置的动画,将节点的位置手动设置为目标位置(1, 1, 1)。最后,将这两个动画组合成一个动画序列,并执行动画。

这样,在动画完成后,节点的位置就会保持在目标位置(1, 1, 1)。

推荐的腾讯云相关产品:腾讯云游戏多媒体引擎(GME),它提供了音视频通信、语音识别、语音合成等功能,适用于游戏开发、在线教育、社交娱乐等场景。了解更多信息,请访问腾讯云GME产品介绍页面:腾讯云游戏多媒体引擎(GME)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS - SceneKit显示与交互3D建模(一)

�Game Demo 初窥门径 代码从上至下流程: 创建一个场景scene,场景本身并不可见,需要添加到sceneView场景上 创建一个摄像机节点并设置摆放位置,所处位置即视角所看位置,可以联想到眼睛视角...创建灯光节点设置摆放位置,灯光可以让需要呈现物体变得更有质感。...(目录根结点也就一个子结点,就是我们素材中Menchi) SCNNode *node = scene.rootNode.childNodes.firstObject; // 绕 y轴 一直旋转 SCNAction...小怪兽 ** BUT **,在实际项目中往往需要我们从服务器上将模型下载下来再来显示,然而这种做法只能是事先把素材放入项目中才能正常显示,【注意:我说是正常显示】,这是不符合我们需求。...如果我们把素材从服务器上下载到沙盒里,程序再直接从沙盒读取和初始化场景会出现为nil问题。 iOS - SceneKit显示与交互3D建模(�二) 最后附上DEMO LXF3DSceneDemo

4.3K40

将模型添加到场景中 - 在您环境中显示3D内容

完成后,关闭“ 助理”编辑器。...将有一个String类型参数,它将有两个名称。在函数外部使用那个命名,而在函数内使用是名称。它将返回一个可选SCNNode。...var modelsInTheScene: Array = [] 返回ViewController + ObjectAddition.swift,并在addObjectButtonTapped...我们实际上没有选择,因为节点具有isHidden属性,并且不显示一个for。好吧,不是我所知道。 那么,让我们来看看这两个场景。...结论 经过漫长旅程,我们终于将我们模型添加到我们环境中,好像它们属于它。我们在本节中也学到了其他有用概念。我们在故事板中定制了我们视图,并在代码中播放动画。

5.5K20
  • ARKit 进阶:物理世界

    适合场景中角色,毕竟我们不想角色移动不想太多力影响。 physicsShape: 当physics body参与到物理模拟时,一个更贴合形状能得到一个更令人满意结果。...SceneKit物理引擎是不支持缩放变换。如果一个node做缩放变换后,physics body将仍是原来尺寸。...从SceneKitrender loop可以看到,物理模拟实际上也是一种动画,只不过动画参数由物理引擎控制。...SceneKit也遵循iOS传统,具有隐式、显式动画,同时有SCNAction接口。...第二个方法:返回所有在物理世界中与指定body发生contactnode。 最后 物理引擎能够帮助我们模拟真实世界效果,虽然高级特效一般都是自己在渲染循环中实现但它大大减轻了我们计算成本。

    2.8K70

    iOS版 使用ARKit和Swift创建交互式Domino游戏

    将以下变量添加到类顶部: var dominoes: [SCNNode] = [] 最简单形式命中测试是确定用户触摸屏幕2D位置是否与现实世界中任何虚拟对象或在我们情况下与平面相交。...由于这是连续移动,因此该方法每秒调用多次。 我们需要想办法在每个多米诺骨牌之间留出一些距离。要做到这一点,我们必须保存先前放置多米诺骨牌位置,然后计算它到我们命中测试的当前位置距离。...如果没有,我们将previousPosition属性设置为hit-Test结果位置并返回。 我们得到了命中测试结果的当前位置。 我们计算前一个位置和当前位置之间距离。...现在我们地板上有一个物理体。但它还没有完成。由于ARKit平面检测不断更新地板大小,因此值也physicsShape应该更新。...关于作者:Koushan Korouei是一位具有Swift和Objective-C专业经验iOS开发人员。他对增强现实充满热情,他现在主要焦点是ARKit。他相信AR眼镜将取代智能手机未来。

    2.3K30

    iOS ARKit教程:赤手在空中绘画

    通过检测这些点在一个帧之间移动距离,我们可以估算出这个设备在3D空间中位置。这就是为什么当设备放置在一个毫无特色白色墙壁上或者当设备移动得非常快导致图像模糊时候,ARKit不能正常工作。...但很明显,它暗示了未来探测更复杂对象。然后,我们开始运行会话,并确保我们重新设置跟踪。 最后,我们需要在摄像机位置时更新焦点方块。实际设备朝向或位置,变化。...平面是在X和Z方向上定义,Y是表面的法线。如果我们想让它看起来就像在平面上打印一样,我们应该始终保持我们绘图节点位置在相同Y值上。 平面探测是通过ARKit提供调函数完成。...在三维模型中,我们估计了与最后位置不同,并增加/减少了所有点高度。 到目前为止,我们正在绘制探测表面,假设虚拟笔位于屏幕中心。现在,有趣部分——可以检测用户手指并使用它而不是屏幕中心。...最后,我们提供了一个新图像,其中该对象位置变了以及之前操作分析结果。鉴于此,它将为我们返回对象位置。 我们要用一个小技巧。

    1.8K10

    一篇文章看懂iOS 11 SDK所有新特性与功能

    这部分内容在以前版本 SDK 中也存在,不过在 iOS 11 SDK 中它们集中到了框架中,并将一些更具体和底层控制开放出来。...几乎可以肯定,那么不做最早,只做最好 Apple 似乎在这一刻回到了舞台上 ARKit 极大降低了普通开发者玩 AR 门槛,也是 Apple 现阶段用来抗衡 VR 选项。...Xcode 9 中编辑器进行了重写,支持了对 Swift 代码重构 (虽然还很基础),将 VCS 提到了更重要位置,并添加了 GitHub 集成,可以进行同局域网无线部署和调试。...虽然不知道是不是由于换成了 Swift 4,不过正在做公司项目的总编译时间从原来三分半缩短到了两分钟半左右,可以说相当明显了。...beta,然后在打包和发布时再切 Xcode 8 了。

    1.3K70

    聚焦位置-选择您喜欢位置放置虚拟物体

    现在,我们在FocusSquare.swift文件中。 接下来,替换** Foundation为SceneKit**。 然后,声明一个名为FocusSquare新类,默认类型为SCNNode。...这将调用SCNNode超类默认初始化程序,并在我们使用自己代码自定义之前设置所有内容。...我们现在能够看到它,但它位置并不理想,就好像它是在相机起始位置,这是世界起源。最重要是,它是空闲。我们希望它在场景中移动,以便我们可以选择一个位置来添加模型。...screenCenter = view.center 帧更新 现在,让我们导航ViewController + ARSCNViewDelegate。...我们现在有焦点方块向我们展示我们是否找到了合适平面。到目前为止,它是为了帮助我们更好地可视化飞机和命中测试结果。我们将在委托方法中注释掉与网格相关代码。

    2.4K30

    ARKit 教学:如何搭配SceneKit来建立一个简单ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件

    Apple终于在iOS11将增强现实带进来,也因为iOS11,未来将会有数不清iPhones和iPads就会搭载AR功能,这将会让ARKit成为世界最大平台,是的,如果你对建置增强现实Apps有兴趣...你需要准备 进入本篇教学前,建议你已有对iOS基础开发能力,这属于中阶程度教学,并且,我们将需要Xcode9以上版本。...连接IBOutlet 我们目前仍在Main.storyboard位置,请往介面右上方找到toolbar,并开启Assistant Editor,现在将ARKit连接到ViewController.swift...档位置: import ARKit 接着请按住control并在ARKit ScenKitView上拖到至ViewController.swift,当连接到时,请指定为IBOutlet,并命名为sceneView...好! 现在我们需要修改didTap(withGestureRecognizer:)方法,我们想要当真实世界某一点侦测到时,我们就能加入一个物件。

    1.8K20

    解决 iOS 15 上 APP 莫名其妙地退出登录

    iOS 15 公开推出后, 我们开始从用户端收到反馈报告:在打开我们应用程序(Cookpad) 时他们莫名其妙反复退出到登录页。...现在,我实际上从未想过有这么大延迟,实际上是@_saagarjha建议我检查时间戳,之后,他指给我看这条推特。 Twitter:Apple开发人员文档首页 推特翻译:有趣iOS 15优化。...然后,该应用程序暂停,随后 "启动"似乎更快。 现在一切都说得通了。...结论 从iOS 15开始,系统可能决定在用户实际尝试打开你应用程序之前对其进行 "预热",这可能会增加受保护数据在你认为应该无法使用时候访问概率。...这是一个相当难调试bug,而且行为变化似乎完全没有记录,这对我来说真的没有帮助。如果你也被这个问题所困扰,请考虑复制FB9780579[5]。 我从中学到了很多东西,我希望你也一样!

    90610

    2017编程语言排行榜

    C#已经重新进入前五名,夺回了去年 R 语言抢走位置。Ruby 连续下跌至第 12 位,苹果 Swift 也乘机和谷歌 Go 语言一同进入前十。...这确实出乎意料,因为 Swift 语言早两年才首次登入该排行榜,那时候它还离前十位置很远。Swift 是苹果发布最新语言,它可以开发 iOS 和OS X 软件。...尽管在2018年最有前景编程语言排行榜上,Swift并未排名前五。不过,这未必会影响它潜力。不同于 Swift 上升,同样出身苹果 Objective-C 跌到了第 26 位。...这说明即使有些语言已经非常古老,但它们仍然维持一个稳定用户群体。 如果我们从语言用户增速来看,Python 仍然是最快。...接下来就是 C、C++和 Java,但我们看到 Swift 增速排到了第五名。该语言和已存在 Objective-C 代码相匹配,并且近年来也已经开源来吸引开发者。

    1.4K60

    《Motion Design for iOS》(十七)

    这里是和上面一样功能,但是是Swift而不是Objective-C写。你可以打开Balls In Swift Xcode工程导出这个例子Swift版本。...让我们创建一个基于block动画来将圆从1.0扩大到2.0倍,这会让它变成原来两倍大。...第一个安排,持续时间(duration),设为半秒,第二个安排,延迟(delay),设为0。...有很多方式来操作一个视图transform(尺寸、旋转、位置),所以苹果提供了很多函数来改变你感兴趣值,在我们例子中,是尺寸。...最后,我们不需要在动画完成后运行任何代码,所以我么你设置完成(completion)安排为NULL。这里是你再次运行代码后会看到样子。GIF会回到原始样子但实际上球并不会。

    95920

    ARKit示例 - 第4部分:现实主义 - 照明和PBR

    要查看更新,请查看下面的视频,而不仅仅是平面实心钻孔立方体,我们现在添加了一些基于PBR材料,这些材料为我们提供了一个更加逼真的物体,似乎适合现实世界,具有可变光照和反射。...当我们这样做时,我们现在可以插入一块几何体,让它感觉更像它实际上是场景一部分。 光估计 最后,我们提到了lightEstimation,ARKit可以分析场景并估计环境光强度。...文章,请查看这篇文章: 惊人基于物理渲染使用新IOS 10 SceneKit 如何简单地使用新推出iOS版10基于物理渲染器,并没有得到很大期待结果...medium.com 我不会在本文中尝试解释此过程所有细节...,考虑将几何体周围图像作为背景投影,然后SceneKit使用此背景来确定几何体是如何照亮。...= env; UI改进 我改变了UI,所以现在如果你用一根手指在平面上按住,它将改变材料,对于立方体也是如此,按住以更改立方体材料。

    1.2K30

    ARKit示例 - 第2部分:平面检测+可视化

    增强现实目的是能够在特定点将虚拟内容插入到现实世界中,并在您在现实世界中移动时拥有虚拟内容轨道。使用ARKit,其基本过程包括从iOS设备相机读取视频帧,为每个帧处理图像并提取特征点。...获得图像功能后,您可以跟踪多个帧功能,当用户在世界各地移动时,您可以获取这些相应点并估计3D姿势信息,例如当前摄像机位置位置。特征。...SCNNode实例是ARKit创建SceneKit节点,它有一些属性设置,如方向和位置,然后我们得到一个锚实例,这告诉我们使用有关已找到特定锚更多信息,例如大小和中心飞机 锚实例实际上是一个ARPlaneAnchor...提取结果 下面是我走过房子一部分,从上面的视频中检测到飞机一些屏幕截图: 这是我厨房里一个小岛,ARKit很好地找到了范围并正确定位了飞机以匹配凸起表面 image.png 这是一个看着地板镜头...请注意,在ARSCNViewDelegate调中,您必须处理ARKit在合并平面时删除了ARPlaneAnchor实例情况。

    2.9K20

    TIOBE 10 月排行榜:C++ 夺回前三,Swift 进入前十​​​​​​​

    根据观察,排行榜中 TOP 9 编程语言已基本稳定,唯独第 10 名每个月都会有变化。在本月中,Swift 排名就上升到了第 10 位置,且试图成为 TIOBE TOP 10 固定成员。...与此同时,Ruby 和 Perl 也正在争夺这个位置。...不过 TIOBE 认为,按照此前趋势来看,目前编程语言 TOP 10 候选人似乎有 3 位:Swift、Go 和 R,但它们也并不一定能够成功站稳,原因如下: Swift 显然是开发 iOS 移动应用程序头号编程语言...需要注意是,SQL 自 2018 年 2 月起重新添加到了 TIOBE 排行榜中,由于没有以往数据可以对比,所以会给人 SQL 语言指数突然暴涨错觉。...TOP 10 编程语言 TIOBE 指数走势(2002-2018) 其他方面,备受大家关注并寄予众望 Rust 在 10 月排名中出现了轻微下滑,由上个月 31 名跌到了这个月 34 名。

    57730

    IEEE发布2017年编程语言排行榜:Python高居首位,PHP第八

    实际上,Diakopoulos 在对公司招聘所要求基本语言分析中,C 语言需求甚至还要在 Python 之前。 C# 已经重新进入前五名,它重新夺回了去年 R 语言抢夺位置。...这一点十分令人惊奇,因为 Swift 语言早两年才首次登入该排行榜,当然它是在前十以外,相对于 Swift 上升,苹果 Objective-C 跌到了第 26 名。...然而今年是第二年没有新语言进入排名,我们似乎已经开始进入巩固代码阶段,开发者同样需要时间消化那些为云服务、移动端和大数据应用等创造新工具。...这说明即使有些语言已经非常古老,但它们仍然维持一个稳定用户群体。 如果我们从语言用户增速来看,Python 仍然是最快。...接下来就是 C、C++和 Java,但我们看到 Swift 增速排到了第五名。Swift 是苹果发布最新语言,它可以开发 iOS 和 OS X 软件。

    51670

    IEEE发布2017年编程语言排行榜:Python高居首位,PHP第八

    实际上,Diakopoulos 在对公司招聘所要求基本语言分析中,C 语言需求甚至还要在 Python 之前。 C# 已经重新进入前五名,它重新夺回了去年 R 语言抢夺位置。...这一点十分令人惊奇,因为 Swift 语言早两年才首次登入该排行榜,当然它是在前十以外,相对于 Swift 上升,苹果 Objective-C 跌到了第 26 名。...然而今年是第二年没有新语言进入排名,我们似乎已经开始进入巩固代码阶段,开发者同样需要时间消化那些为云服务、移动端和大数据应用等创造新工具。...这说明即使有些语言已经非常古老,但它们仍然维持一个稳定用户群体。 如果我们从语言用户增速来看,Python 仍然是最快。...接下来就是 C、C++和 Java,但我们看到 Swift 增速排到了第五名。Swift 是苹果发布最新语言,它可以开发 iOS 和 OS X 软件。

    51710

    侮辱、无视,Swift 之父离开核心团队:纯属浪费时间

    侮辱后,沟通无效离职 从公告中可以看出,Swift 核心团队有意加强与社区互动。Kremenek 也提到了前核心团队成员、LLVM 和 Swift 设计者 Chris Lattner 离职。...我认为 Swift 是一门了不起语言,未来会很长、很成功,但它肯定不是社区设计语言,这是非常确定事情。...社区成员:Swift 似乎变了 在 IEEE Spectrum 发布 2021 年度编程语言排行榜中,Swift 已经排名第十。...实际上,Chris 对于苹果贡献远不只是 Swift。 根据公开资料,Chris 在硕士毕业时提出了一套完整运行时编译思想,奠定了 LLVM 发展基础。...2010 年 7 月,Chris 开始为 iOS 和 OS X 平台开发下一代编程语言 Swift

    39430

    《iPhone X ARKit Face Tracking》

    由于不同AR体验对iOS设备有不同硬件要求,所有ARKit配置要求iOS设备至少使用A9及以上处理器,而face tracking更是仅在带有前置深度摄像头iPhone X上才会有。...人脸位置和方向 父类ARAnchortransform属性以一个4*4矩阵描述了当前人脸在世界坐标系位置及方向。...比较坑是,ARKit 检测不到人脸时也并未将其node移除,因此delegate也没有调 - (void)renderer:(id )renderer didRemoveNode...需要注意是,当我们给用户戴上3D眼镜或帽子时候,我们当然是希望模型后面部分能正确用户脸给挡住以免露出马脚。...写在末尾 这次能有机会参加Apple封闭开发且是如此有趣模块,在没有网络情况下摸索着做出demo,接触到了最前沿AR相关技术,对我来说是一份非常宝贵经历。心怀感恩,踏步前行。

    1.9K30

    解决 iOS 15 上 APP 莫名其妙地退出登录 解决 iOS 15 上 APP 莫名其妙地退出登录

    iOS 15 公开推出后, 我们开始从用户端收到反馈报告:在打开我们应用程序(Cookpad) 时他们莫名其妙反复退出到登录页。...然后,该应用程序暂停,随后 "启动"似乎更快。 现在一切都说得通了。...结论 从iOS 15开始,系统可能决定在用户实际尝试打开你应用程序之前对其进行 "预热",这可能会增加受保护数据在你认为应该无法使用时候访问概率。...(或对应委托调/通知)并相应处理。...这是一个相当难调试bug,而且行为变化似乎完全没有记录,这对我来说真的没有帮助。如果你也被这个问题所困扰,请考虑复制FB9780579。 我从中学到了很多东西,我希望你也一样!

    1.6K20

    我在Uber亲历最严重工程灾难

    iOS 平台方面,这次重写为采用 Swift(当时 Swift 版本是 2.x)带来了机会。...iOS 9 引入了新架构,可以把大小降到原来一半。因为留给我们时间只有一周了,所以我们决定放弃支持 iOS 8。...我们普遍想法是,iOS 9 版本二进制文件大小减小了一半,所以我们仍然拥有足够空间,可以在重写完成后,在未来某个时间解决问题。不幸是,我们完全想错了。...但人们被这个做法惊到了。我一些 Twitter 旧同事建议我离开这家会追踪用户位置“坏”公司。受到“惊吓”的人们关闭了手机位置权限,但新 App 并没有相应解决办法。 我们赶紧想办法讨论对策。...我们开始反编译目标文件,并逐行检查,看看为什么 Swift 代码生成文件体积会这么大。我们删除了一些没有使用特性,并把 watchOS 应用重新改回了 Objective-C。

    64620
    领券