Swift SceneKit——物理 block 不会相互粘连

标签 swift physics scenekit

方 block 会分崩离析。
如何解决这个问题?
初始化 block :

var boxNode = SCNNode(geometry: SCNBox(width: 0.75, height: 0.15, length: 0.25, chamferRadius: 0))
boxNode.position = SCNVector3(x: x1, y: y, z: z1)
boxNode.geometry?.firstMaterial = SCNMaterial()
boxNode.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "wood.jpg")
boxNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
boxNode.eulerAngles.y = Float(Double.pi / 2) * rotation

boxNode.physicsBody?.friction = 1
boxNode.physicsBody?.mass =  0.5
boxNode.physicsBody?.angularDamping = 1.0
boxNode.physicsBody?.damping = 1

picture

video

full code

最佳答案

我无法告诉您如何解决它,因为我有完全相同的问题,但我无法解决。然而,当我四处游玩时,我发现了一些事情(你可能会发现它们很有用):

  1. 我在纯 SceneKit 中没有发生同样的问题,因此我认为这是 ARKit

  2. 中的错误
  3. 必须将具有物理特性的节点添加到场景的 rootNode 中,否则会发生奇怪的事情(元素相互穿过,重力行为不一致)

  4. 如果您将nil 作为shape 参数传递,SceneKit 将根据节点的几何形状绘制边界框。这对我来说效果不佳,所以我所做的(使用 SceneKit 编辑器)是复制几何图形,然后将其设置为边界框的自定义形状(查看附件图片)

SceneKit Editor

总的来说,当与 ARKit 一起使用时,我发现 SceneKit 中的物理模拟非常错误,我花了很多时间“欺骗”它来工作更多 - 或者- 更少我希望它如何工作。

关于Swift SceneKit——物理 block 不会相互粘连,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47203307/

相关文章:

objective-c - UIProgressView : modify height for track line

c++ - OpenMP 的缩放问题

c++ - 简单的气体/流体动力学源代码

ios - 无法正确检测多几何形状的碰撞

ios - 将桶形失真应用于 SCNView 的最佳方法是什么?

swift - "Cannot assign to the result of this expression"变量 (var) 引起的错误

ios - Swift 2.0,对 DatePicker 最大日期的验证

ios - 正 NSDecimalNumber 返回意外的 64 位整数值

ios - 快速后退按钮 segue

javascript - 计算结果向量弹跳圆/球