我正在尝试创建一个应用程序,让用户堆叠不同的几何形状。在加载到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
。这可能会对你想要的力产生太大的影响,但值得一试。 - theMikeSwan