xcode – 物理模拟的SceneKit更新方法

xcode – 物理模拟的SceneKit更新方法,第1张

概述我玩过精灵套件,并使用更新方法设置每个时间步骤处理的东西.我正试图学习一些快速的场景套件,似乎无法找到相应的. 你能指点一下为SceneKit实现更新方法的例子吗?谢谢. (是的,我知道这个问题是关于SceneKit,而不是SpriteKit,但它触及了两个框架之间的共性和差异,所以我将在这个答案中解决这些问题.) 在SpriteKit中,游戏循环方法(update,didSimulatePhys 我玩过精灵套件,并使用更新方法设置每个时间步骤处理的东西.我正试图学习一些快速的场景套件,似乎无法找到相应的.

你能指点一下为SceneKit实现更新方法的例子吗?谢谢.

解决方法 (是的,我知道这个问题是关于SceneKit,而不是SpriteKit,但它触及了两个框架之间的共性和差异,所以我将在这个答案中解决这些问题.)

在SpriteKit中,游戏循环方法(update,dIDSimulatePhysics等)最初是场景类SKScene的一部分.然而,这并不总是最好的想法 – 您可能希望将场景实例视为更像数据而非实现游戏逻辑的场所(特别是现在可以在Xcode 6图形场景编辑器中完全构建场景).所以在iOS 8和OS X Yosemite中,这些方法分为两个方面.如果您已经为每帧游戏逻辑继承了SKScene,那么您可以继续这样做.但是如果您宁愿将该代码放在别处,可以在场景中设置委托,并在那里实现等效的SKSceneDelegate方法.

SceneKit有更多的关注点分离. SCNScene更接近于纯粹的数据模型对象,以及由负责显示场景的视图(或其他对象)管理的所有渲染循环功能.通常,您在SCNVIEw中显示一个场景 – 但也有其他类可以渲染场景,因此它们的通用API可以在SCNSceneRenderer协议中找到.使用该协议定义的委托属性为您的视图设置委托,并在您的委托中,您可以实现SCNSceneRendererDelegate方法以参与渲染循环的关键阶段.

SceneKit循环阶段几乎直接对应于SpriteKit中的那些:update:变为渲染器:updateAtTime:,dIDEvaluateActions:变为渲染器:dIDApplyAnimationsAtTime :(因为它包括CoreAnimation样式的动画以及SpriteKit样式的动作)等.

因此,对于SpriteKit每帧更新方法的SceneKit等效,请执行以下 *** 作:

>将一个自定义对象(例如,视图控制器)设置为SCNVIEw实例的委托.
>在该自定义类中,实现以下方法:

func renderer(_ aRenderer: SCNSceneRenderer!,updateAtTime time: NSTimeInterval) {    // per-frame code here}

或者,如果在处理动作或物理后需要发生每帧逻辑,则对其他SCNSceneRendererDelegate方法执行类似 *** 作.

总结

以上是内存溢出为你收集整理的xcode – 物理模拟的SceneKit更新方法全部内容,希望文章能够帮你解决xcode – 物理模拟的SceneKit更新方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1098547.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存