【发布时间】:2019-02-12 04:00:27
【问题描述】:
我想将具有相应场的多个粒子系统放置到一个场景中并在它们之间切换。这些场应该只与特定的粒子系统交互。我无法使用 Xcode SceneKit 文档生成器执行此操作。
根据 Apple 文档:
为了确定一个字段是否影响物理体,SceneKit 对该字段的类别位掩码和主体的 categoryBitMask 属性执行按位与运算。如果结果是非零值,SceneKit 会计算并将场的力施加到身体上。为了确定场是否影响由 SCNParticleSystem 对象生成的粒子,SceneKit 使用包含粒子系统的节点的 categoryBitMask 属性执行相同的检查。
使用此属性创建仅影响场景中某些实体的场。减少受场影响的物体数量也可以提高模拟性能。
我创建了一个简单的场景文件,其中包含:
- 线性重力场。它的类别位掩码在节点检查器中设置为 2。
- 一个节点。它的类别位掩码在节点检查器中设置为 4。
- 一个球形粒子系统,位于上述节点内。受物理场影响选项选中。节点检查器中的类别位掩码保留为 1。
不管我将类别位掩码设置为什么。物理场总是与粒子系统相互作用。我还尝试在 Playground 中以编程方式将位掩码设置为具有 3 个粒子系统的单独文件,每个系统都有一个字段,但没有运气。使用:
let effect1Mask = 0x1 << 1
let effect2Mask = 0x1 << 2
let effect3Mask = 0x1 << 3
【问题讨论】:
标签: ios swift xcode scenekit arkit