Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 通过将底部保持在同一y轴上来设置SCNBox高度的动画_Swift_Scenekit - Fatal编程技术网

Swift 通过将底部保持在同一y轴上来设置SCNBox高度的动画

Swift 通过将底部保持在同一y轴上来设置SCNBox高度的动画,swift,scenekit,Swift,Scenekit,我有一个通过SCNNode添加到SCNScene的SCNBox对象 let box:SCNBox = SCNBox(width: 4, height: 4, length: 4, chamferRadius: 0.1) box.firstMaterial?.diffuse.contents = UIColor.greenColor() let boxNode:SCNNode = SCNNode(geometry: box) boxNode.position = SCNVector3(x: 2,

我有一个通过SCNNode添加到SCNScene的SCNBox对象

let box:SCNBox = SCNBox(width: 4, height: 4, length: 4, chamferRadius: 0.1)
box.firstMaterial?.diffuse.contents = UIColor.greenColor()
let boxNode:SCNNode = SCNNode(geometry: box)
boxNode.position = SCNVector3(x: 2, y: 2, z: 2)
scene.rootNode.addChildNode(boxNode)
我的问题是,如何设置高度的动画(假设为40),同时使长方体不会向下生长

我想我需要改变轴心点到盒子底部

如果这是一个解决方案,我不知道如何做到这一点


如何才能正确执行此操作?

是的,您的回答是正确的,即您需要更改的内容。轴是一个变换-这意味着它可以包含用于设置节点“基本”方向的缩放和旋转-但您只需要一个平移。要将长方体固定在底部,请将轴平移到长方体高度的一半:

boxNode.pivot = SCNMatrix4MakeTranslation(0, -(box.height/2), 0)
但是,如果更改高度,这还不足以使其保持锚定状态-轴将保持旧高度的一半,因此长方体仍将在两个方向上增长。因此,在设置动画时,您需要更改轴和高度:

SCNTransaction.begin()
SCNTransaction.setAnimationDuration(5)
box.height = 20
boxNode.pivot = SCNMatrix4MakeTranslation(0, -(box.height/2), 0) // new height
SCNTransaction.commit()
由于同时设置了
box.height
boxNode.pivot
的动画,因此在整个动画过程中,它将固定在底部