Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在使用SceneKit开发的项目中使用SpriteKit粒子文件?_Swift_Sprite Kit_Scenekit_Arkit - Fatal编程技术网

Swift 如何在使用SceneKit开发的项目中使用SpriteKit粒子文件?

Swift 如何在使用SceneKit开发的项目中使用SpriteKit粒子文件?,swift,sprite-kit,scenekit,arkit,Swift,Sprite Kit,Scenekit,Arkit,我正在用SceneKit制作一个简单的ARKit应用程序,需要添加一些粒子效果。通常我可以创建一个SceneKit粒子文件,设计一些粒子效果,然后像这样使用它 let smoke=SCNParticleSystem(名为:“xxx.scnp”,目录:nil)! let hole=SCNNode() 孔。添加微粒系统(烟雾) 但从Xcode12开始,我只能创建后缀为.sks的SpritKit粒子文件。上面的代码无法再使用此文件。我是ARKit的新手。谁能告诉我如何将粒子效果集成到我的SceneK

我正在用SceneKit制作一个简单的ARKit应用程序,需要添加一些粒子效果。通常我可以创建一个SceneKit粒子文件,设计一些粒子效果,然后像这样使用它

let smoke=SCNParticleSystem(名为:“xxx.scnp”,目录:nil)!
let hole=SCNNode()
孔。添加微粒系统(烟雾)

但从Xcode12开始,我只能创建后缀为
.sks
的SpritKit粒子文件。上面的代码无法再使用此文件。我是ARKit的新手。谁能告诉我如何将粒子效果集成到我的SceneKit项目中?非常感谢。

不知什么原因,苹果从最新的XCode版本中删除了SCNP(SceneKit粒子文件)模板

您有以下选项:

  • 从Apple或GitHub下载包含一个或多个.scnp文件的任何示例代码项目。从那里获取文件并将其实现到AR项目中。您仍然可以像往常一样在XCode中编辑文件。(粒子系统编辑器)

  • 完全在代码中创建粒子系统

像这样:

let myParticleSystem = SCNParticleSystem()
然后在实例中配置所需的一切:myParticleSystem

SpriteKit粒子实现 如果您想在3D场景中使用2D粒子,有两种常规方法可以在SceneKit中显示SpriteKit场景。第一种方法是将SKScene指定为SceneKit几何体的材质:

// 2D scene
let skScene = SKScene()
    
guard let emitter = SKEmitterNode(fileNamed: "sparks.sks")
else { return }
        
emitter.position = CGPoint(x: 10, y: 25)
emitter.targetNode = skScene
skScene.addChild(emitter)
    
// 3D scene
let plane = SCNPlane(width: 5, height: 5)
plane.materials.first?.diffuse.contents = skScene

let planeNode = SCNNode(geometry: plane)
sceneView.scene.rootNode.addChildNode(planeNode)
    
第二种方法-将SKScene指定给SceneKit的虚拟周围环境

sceneView.scene.lightingEnvironment.contents = skScene

SceneKit粒子实现 在SceneKit中使用粒子的常规方法是其本机粒子系统:

let particleSystem = SCNParticleSystem()
particleSystem.birthRate = 50

particleSystem.particleSize = 0.5
particleSystem.particleLifeSpan = 10
particleSystem.particleColor = .green

let particlesNode = SCNNode()
particlesNode.addParticleSystem(particleSystem)
sceneView.scene.rootNode.addChildNode(particlesNode)
附言

关于弃用的预配置SCNP文件及其替换读取

如果要设置3D fire等现象,最好的方法是在
场景图中进行设置。为了获得更好的结果,请使用具有不同参数的2个或3个粒子系统对象

为了更好地理解如何基于
png示例设置3D fire
(源代码),请打开Apple Motion 5应用程序场景并单击Inspector按钮


然后,尝试在SceneKit的场景图中实现具有相同外观的火灾。

谢谢您的回答。粒子是否仅出现在此平面上?如果是这样,那就不是我想要的。例如,我希望看到火焰在3d世界中燃烧,而不仅仅是在一个平面上燃烧。也许我还是应该尝试使用SceneKit粒子文件?是的,如果您想要
3D fire
效果,请使用SceneKit粒子。很明显。您可以通过编程或在UI中,借助场景图(使用粒子系统元素)设置3D fire。这是一种简单的方法。我找到了一个
scnp
文件并完成了演示。