我试图通过将其枢轴点设置为任何角来旋转 block ,但似乎设置枢轴点实际上重新定位了节点,使该点保持在原来的位置......
例如
SCNBox *box = [SCNBox boxWithWidth:1 height:2 length:1 chamferRadius:0];
SCNNode *node = [SCNNode nodeWithGeometry:box];
node.position = SCNVector3Make(0, 0, 0);
[self.scene.rootNode addChildNode:node];
node.pivot = SCNMatrix4MakeTranslation(0.5, -1, 0.5);
[node runAction:[SCNAction rotateByAngle:GLKMathDegreesToRadians(90)
aroundAxis:SCNVector3Make(0, 0, 1)
duration:2]];
在 node.position 为 0,0,0 和盒子几何形状为 1, 2, 1 的情况下,我会想象这个方 block 位于地板上方 1 个单位...如果你不这样做的话设置枢轴。
真正的问题是,你如何设置这个节点的枢轴位置,而不影响它的位置,所以如果我按下右键,它会围绕最右下角的 z 轴旋转,如果我按下左键,它会围绕最左下角的点旋转,上下方向相同,但在 x 轴上。
最佳答案
SCNNode
的pivot
属性类似于CALayer
的anchorPoint
(参见Anchor Points Affect Geometric Manipulations ).如果您希望更改 pivot
属性不产生任何视觉效果,您还必须更改其 transform
(或 position
)属性(property)。
关于ios - SCNNode 枢轴更改节点位置是否正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552004/