【问题标题】:Can't prevent physics field from interacting with particle system using category bit mask无法使用类别位掩码阻止物理场与粒子系统交互
【发布时间】: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


    【解决方案1】:

    我发现无法在场景图构建器中的物理字段上设置类别位掩码,它没有公开。它必须以编程方式设置。我在物理场节点上设置了遮罩,因此它不起作用。

    【讨论】:

      猜你喜欢
      • 2015-03-11
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多