【发布时间】:2018-08-03 10:48:42
【问题描述】:
我正在尝试创建一个应用程序,用户可以在其中堆叠不同的几何形状。在 ARSCNView 中加载的 .scn 文件中,我插入一个静态平面,然后在用户每次点击时,应用程序都会插入一个动态 SCNNode。
第一个节点被插入到平面上方几英寸处,以复制坠落的物体。然后,每个其他节点都被丢弃在另一个节点之上。
这是应用程序的主要思想;添加3或4个节点后出现问题,它们似乎相互滑动,几乎摇晃,整个结构崩溃。
这是我要插入的节点:
let dimension: CGFloat = 0.075
let cube = SCNBox(width: dimension, height: dimension, length: dimension, chamferRadius: 0.0)
let node = SCNNode(geometry: cube)
node.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.dynamic, shape: nil)
node.physicsBody?.mass = 2.0
node.physicsBody?.friction = 1.0
node.physicsBody?.restitution = 0.01
node.physicsBody?.damping = 0.0
node.physicsBody?.angularDamping = 0.0
node.physicsBody?.rollingFriction = 1.0
node.physicsBody?.allowsResting = true
let insertionYOffset = 0.3
node.position = SCNVector3(hitResult.worldCoordinates.x, hitResult.worldCoordinates.y + Float(insertionYOffset), hitResult.worldCoordinates.z)
我尝试过使用这些值,这些是最好的,但它们不足以创建稳定的块结构。
作为一项要求,我需要让方块保持动态,它们需要受到重力、风等的影响。
【问题讨论】:
-
您也可以尝试调整
velocityFactor。这是SCNVector3。可能会影响你想要太多的力量,但值得一试。 -
这些块的尺寸非常小。当你让块更大一点时会发生什么,比如:1.0?