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

节点位置在SCNNode.runAction (Scenekit)的调用中被重置

在SceneKit中,SCNNoderunAction 方法用于执行动画或其他操作。如果在调用 runAction 时节点的位置被重置,可能是由于以下几个原因:

基础概念

  • SCNNode: SceneKit 中的基本构建块,代表一个对象在三维空间中的位置、方向和大小。
  • runAction: 用于在节点上执行动画或其他操作的方法。

可能的原因

  1. 默认行为: 某些动作可能会重置节点的位置到其初始状态。
  2. 父节点变换: 如果节点有父节点,父节点的变换可能会影响子节点的位置。
  3. 约束: 节点上的约束可能会导致位置被重置。
  4. 代码逻辑: 可能在调用 runAction 之前或之后有其他代码修改了节点的位置。

解决方法

  1. 检查动作类型: 确保使用的动作不会重置节点位置。例如,使用 SCNAction.move(to:duration:) 而不是可能导致位置重置的其他动作。
  2. 检查动作类型: 确保使用的动作不会重置节点位置。例如,使用 SCNAction.move(to:duration:) 而不是可能导致位置重置的其他动作。
  3. 保存和恢复位置: 在执行动作之前保存节点的位置,并在动作完成后恢复。
  4. 保存和恢复位置: 在执行动作之前保存节点的位置,并在动作完成后恢复。
  5. 检查父节点和约束: 确保父节点没有应用会改变子节点位置的变换或约束。
  6. 检查父节点和约束: 确保父节点没有应用会改变子节点位置的变换或约束。
  7. 调试代码逻辑: 使用断点或日志来跟踪节点位置的变化,找出具体是哪段代码导致了位置重置。

应用场景

  • 游戏开发: 在游戏中移动角色或物体时,确保位置正确无误。
  • 交互式应用: 在用户交互过程中,保持对象的稳定性和预期行为。

通过上述方法,可以有效地诊断和解决 SCNNode.runAction 调用中节点位置被重置的问题。如果问题依然存在,建议进一步检查相关的动画和逻辑代码,确保每一步操作都符合预期。

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

相关·内容

iOS ARKit教程:用裸露的手指在空中画画

在撰写本文时,Apple不提供除此之外的选项。但显然,它暗示将来会发现更复杂的物体。然后,我们开始运行会话并确保我们重置跟踪。...在ARKit中检测平面 ARKit可以检测新平面,更新现有平面或删除它们。为了以方便的方式处理平面,我们将创建一个虚拟的SceneKit节点,该节点保存平面位置信息和对焦点方块的引用。...平面在X和Z方向上定义,其中Y是表面的法线,即,如果我们想让它看起来好像在平面上打印,我们应该始终将我们的绘图节点位置保持在平面的相同Y值内。 。 平面检测通过ARKit提供的回调函数完成。...例如,每当检测到新平面时,都会调用以下回调函数: 回调函数为我们提供了两个参数,anchor和node。node是一个正常的SceneKit节点,放置在平面的确切位置和方向。...接下来,在渲染器中,我们将以新图像的形式输入以跟踪手指的新位置: 一旦对象跟踪完成,它将调用回调函数,我们将在其中更新缩略图位置。

2.2K30
  • SceneKit_中级04_约束的使用

    ,让和他之间有约束关系的其他视图,按照一定的约束规则变化,那在游戏中,我们的约束是用来干什么的?...我们看这个类有哪些属性 /* * 作用: 影响因子,决定约束的强度 * 工作原理: 如果设置为1 那么在游戏每一帧渲染的时候,系统都会调整这个约束,如果你设置为0.5 在游戏的某些帧,系统不会进行约束调整...我举个简单的例子,帮助大家理解它的用法 如果你想要玩第一视角的游戏,这是我们需要让摄像机捕捉到人物移动时的位置,这是需要给照相机节点添加一个SCNLookAtConstraint 类型的约束,就能实现这个效果...:(SCNNode *)target; 5.我们如果想要照相机的视野保持在水平面上,也就是说只沿在Y轴转动跟随目标节点,我们应该怎么做呢?...4.设置目标位置,这个值可以动态的改变 3.举个例子理解一下 比如机器人的组成身体 上臂 胳膊 和 手,身体是上臂的根节点,上臂是胳膊的根节点,胳膊是手的根节点,手是身体的根节点,如果我们要实现上面的约束的话

    66210

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

    SceneKit,而且这个是原生的,速度可想而知要比集成U3D后运行要来得快~ SceneKit建立在 OpenGL 的基础上,包含了如光照、模型、材质、摄像机等高级引擎特性。...SceneKit实现的内容为节点层次结构树,也被称为场景图。一个场景由一个为场景世界定义一个坐标空间的根节点,以及其他的可视节点组成。...�Game Demo 初窥门径 代码从上至下的流程: 创建一个场景scene,场景本身并不可见,需要添加到sceneView的场景上 创建一个摄像机节点并设置摆放的位置,所处位置即视角所看的位置,可以联想到眼睛视角...创建灯光节点设置摆放的位置,灯光可以让需要呈现的物体变得更有质感。...引入SceneKit库 在ViewController中导入SceneKit #import SceneKit/SceneKit.h> 接下来在桌面上新建一个art文件夹,并加上后缀【.scnassets

    4.5K40

    SceneKit_中级08_阴影详解

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit...让学习成为一种习惯 学习目标 掌握SceneKit 框架中的三种阴影创建方式 阴影 阴影类型 :静态,动态,投射 静态 这个方式很简单,就是给物体节点增加一个子节点,子节点设置一个图片作为它的阴影...rootNode.addChildNode(cameraNode) 提示: 摄像机默认方向为 -Z 轴, 我设置它的位置为(0,1000,1000) ,沿自身坐标系x轴顺时针旋转了45度,这个是由于我的模型比较大...,一般摄像机的位置是根据模型的大小进行调节的。...不添加支点,是可以的,但是你要给灯光添加约束,让其对着模型,然后,你让这个灯光移动,这个时候,你会发现灯光节点一动不动,这里为什么不动,猜测是,行为和约束都要计算位置和角度,然而两者冲突了,优先使用约束

    78310

    SceneKit_大神02_弹幕来袭

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 上干货 创建工程 就是一个普通的应用 拖拽一个view放在界面上,...SCNNode *textNode =[SCNNode nodeWithGeometry:text]; // 随机节点位置 textNode.position = SCNVector3Make(-

    50520

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

    我们在节点的Y位置添加一个“0.03”的值来向上移动我们的多米诺骨牌,否则一半的多米诺骨牌会在地板内! 我们将多米诺骨牌节点添加到我们的多米诺骨牌阵列中供以后使用。 现在运行应用程序。...由于这是连续移动,因此该方法每秒被调用多次。 我们需要想办法在每个多米诺骨牌之间留出一些距离。要做到这一点,我们必须保存先前放置的多米诺骨牌的位置,然后计算它到我们的命中测试的当前位置的距离。...在我们的例子中,我们想告诉SceneKit我们的多米诺骨牌应该相互碰撞和地板。 为此,我们必须在节点中添加所谓的“ 物理体 ”。将物理主体添加到节点会告诉SceneKit将该节点包含在物理模拟中。...为什么我们没有为我们的物理身体赋予形状?当我们设置nil为形状的值时,SceneKit会自动将节点的几何体用于物理形状。这意味着我们的工作量减少了!...目前在SceneKit中,只有两种类型的灯支持阴影: 点光源  - 照亮锥形区域的光源 方向光源  - 具有均匀方向和恒定强度的光源。这个位置被忽略了,只有它的方向很重要。

    2.3K30

    SceneKit_入门05_照相机

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 原理分析 视角 视角 上图是一个游戏场景 照相机的位置为(10,0,0...) 物体A的位置为(0,0-6),yFor 表示的是Y轴上的视角。...,你拍一张照片,我的要求是,照片的大小和你手机大小一样,如果你视野小,你的照里面的物体就少,如果你视野大,你照片里面的物体就会变多,那么,对于同一个物体,当然在视野小的时候,显示的体积大,在视野大的时候...)沿着球体表面旋转 2.两个手指头平移手势,照相机是在X轴和Y轴移动 3.捏合手势,是在Z轴移动 致读者 SceneKit 游戏框架的照相机使用,基本内容已经讲解完毕,你学会了吗?

    91120

    区块链DAPP开发实战——在安卓下调用本地节点发行的代币和智能合约

    >>>> 2、Android下访问本地节点并测试合约的调用 我们验证此时代币合约已经可以正常的转账查询余额了,接下来我们看看如何用Android来接入这个节点,此时需要访问本地节点,需要打开Charles...a、使用web3j连接节点获取账户信息 我们需要用到web3j:以太坊推出的java端调用库,和web3.js类似,可以参考web3j中文文档进行开发。...5.0系统以上需要动态权限验证 在MainActivity的onCreate中来访问一下这个节点,由于需要访问网络我们需要在线程中来调用web3j。 首先,我们要连接上我们部署的节点 ? ?...web3j中我们调用任何函数或者合约,都需要最后调用send()来发起请求通知节点执行 上面的函数执行完成后得到返回我们可以确认android通过web3j已成功和节点建立了关联,我们来获取一下账户信息...目前我们的节点只是部署在本地上,之后在合约开发完成后,就可以在公链上发布捞金了。Truffle、solidity及web3j各自都有很多需要深入研究的功能,感兴趣的同学可以研究下。

    1.3K11

    建立您的第一个AR体验

    下载 软件开发工具包 iOS 11.3+ Xcode 10.0+ Beta 概观 此示例应用程序运行ARKit世界跟踪会话,其内容显示在SceneKit视图中。...要启动AR会话,请使用所需的选项(例如平面检测)创建会话配置对象,然后在ARSCNView实例的session对象上调用该方法:run(_:options:) let configuration = ARWorldTrackingConfiguration...如果AR是您应用的辅助功能,请使用该属性确定是否提供isSupported基于AR的功能。 为检测到的平面放置3D内容 设置AR会话后,可以使用SceneKit在视图中放置虚拟内容。...您的视图的委托可以实现向场景添加内容renderer(_:didAdd:for:)方法。当您将内容添加为与锚对应的节点的子节点时,类会自动移动该内容,因为ARKit会细化其对平面位置的估计。...class ARPlaneAnchor 有关在世界跟踪AR会话中检测到的真实世界平面的位置和方向的信息。

    1.1K20

    在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)

    时间:2014.04.26 地点:基地 ————————————————————————— 一、题目 题目是非常easy和基础,就是在单链表的第i个位置后插入一个节点。要求写代码,5分钟之内完毕。...————————————————————————— 二、分析 1.先依照一般的步骤,我们要得到第链表第i个位置的指针。...个人比較喜欢固定一种模式,即经常使用的代码编写模式,假设算法实现原理是一样的,仅仅是在代码的表现上有所差别,我认为就不是必需花心思耍花样。...在链表的实现中比方还可提炼几种编码规范: 1.使用cursor遍历链表指针 for(Node* head_ptr;cursor!...=nullptr;cursor=curosr->get_link()) { ....... } 2.提供两个版本号的编号定位节点的函数或者匹配定位节点的函数 发布者:全栈程序员栈长,转载请注明出处

    76330

    SceneKit_入门07_几何体

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 学习目标 1.了解SceneKit 游戏框架中系统包含的几何对象....2.学习如何将几何形状物体绑定的节点上,显示到视图中. ---- 系统提供的几何形状讲解 正方体 学习技术很好玩 创建方法 SCNBox *box = [SCNBox boxWithWidth:1 height...SCNNode *torusNode = [SCNNode nodeWithGeometry:torus]; // 设置节点的位置 torusNode.position = SCNVector3Make

    80520

    SceneKit_中级09_碰撞检测

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...,碰撞检测的底层实现过程,苹果公司已经帮助我们封装好,我们只需要调用即可!...第一种碰撞检测 SCNView 有个代理SCNSceneRendererDelegate,我们设置它的代理,然后在代理时间自己写算法去检测碰撞,这种方案的确定是要自己写检测算法 scnView.delegate

    47210

    SceneKit_入门10_物理世界

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 在SceneKit_09_物理身体中,我们看到,给物体了一个动态的身体...,的身体,物体就自动的掉落下来,大家有没有思考过为什么,因为在我们创建的场景中可能存在着一种力,这个力很有可能是重力。...立即执行碰撞检测 - (void)updateCollisionPairs 提示 默认情况下,执行碰撞检测是在下一次模拟运行的时候,如果此次运行有碰撞,想要立刻执行碰撞检测,则调用这个方法。

    70910

    SceneKit_高级07_SCNProgram用法探究

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 致可敬开爱的读者 SceneKit 游戏引擎底层有两套渲染机制,OpenGL...= vec4(1,v_uv,1); } 顶点着色器 attribute vec4 a_srcPos; // 几何的原来位置 attribute vec2 a_texcoord; // 几何的纹理坐标

    58710

    SceneKit_高级05 检测手势点击到节点

    SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 先认识一个方法,这个方法在SCNView 里面 public func...: SCNVector3 { get } /// 击中节点的本地法线坐标 open var localNormal: SCNVector3 { get } /// 击中的世界坐标系统的法线坐标

    77610

    SceneKit_中级03_切换照相机视角

    _中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 在游戏中,我们经常可以看到,有视角切换这个功能,那在SceneKit中怎么进行视角切换了...创建3个按钮和SCNView页面 在.m文件中添加对应的三个事件 4.添加框架#import SceneKit/SceneKit.h> 5.创建游戏场景(这个简单) self.scnView.scene...上图原理: 我们首先创建一个地月节点,将其设置为太阳的自节点,这样太阳旋转的时候,我们的地月节点,就会围绕这太阳转动,然后我们创建一个地球节点,让其成为地月节点的子节点,这样地球就能和地月节点一起围绕太阳节点转动了...,同样的道理,月球节点成为地球节点的子节点,那么地球自身的时候,也能带动月球转动了。

    61920

    SceneKit_入门03_节点

    节点 在SceneKit 节点是个抽象的概念,节是个看不见,摸不到的东西,没有几何形状,但是它有位置,以及自身坐标系。...通俗的讲,在场景中创建一个添加节点后,你就可以在这个节点上放我们游戏元素了,比如人物模型,灯光,摄像机等等! 节点上可以添加节点的,每个节点都有自身坐标系。如图,我们把节点2添加到节点1上去。...让学习成为一种习惯 我们已经完成了创建工程的任务,有的人就问了,你不是要将SceneKit 游戏开发,怎么创建的是应用工程,往下看,就这么任性!...第七步.给节点添加节点 // 创建子节点 给子节点添加几何形状 SCNNode *childNode = [SCNNode node]; // 设置节点的位置 childNode.position =...Scenekit_02.gif ] 更多内容 请前往appstory 搜索SceneKit 下载全套教程

    1.7K10

    ARKit 简介

    增强现实(AugmentedReality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。...说起AR,其实它并不是第一次出现,不管在国内还是国外,好多大小公司都对AR有所涉猎,去年流行的Pokémon Go,阿里的AR红包,百度的AR地图…都是AR领域的重要应用。.../ship.scn"]; // Set the scene to the view //设置ARKit的场景为SceneKit的当前场景(SCNScene是Scenekit中的场景,类似于...//创建节点(节点可以理解为AR将要展示的2D图像) SKLabelNode *labelNode = [SKLabelNode labelNodeWithText:@" 修改模型 在苹果的例子中...接下来,我们需要对模型的位置等信息进行设置。点击下面的截图中的红色箭头指向的小图标。 ?

    2.5K60
    领券