gpt4 book ai didi

swift - 通过将 base 保持在相同的 y 来动画 SCNBox 高度

转载 作者:可可西里 更新时间:2023-11-01 00:38:04 26 4
gpt4 key购买 nike

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

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)并同时让盒子不向下增长?

我想我需要更改轴心点以使其位于框的底部?

如果这是解决方案,我不确定该怎么做。

我怎样才能正确地做到这一点?

最佳答案

是的,你是对的 pivot是你需要改变的。枢轴是一种变换——这意味着它可以包含缩放和旋转以设置节点的“基本”方向——但你所需要的只是一个平移。要将盒子锚定在底部,请将轴心平移盒子高度的一半:

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.heightboxNode.pivot 制作动画,因此它将在整个动画过程中保持锚定在底部。

关于swift - 通过将 base 保持在相同的 y 来动画 SCNBox 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27085413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com