SCNNode透视改变节点位置是否正常?

时间:2015-02-16 23:14:24

标签: ios objective-c macos scenekit

我正在尝试通过将其枢轴点设置为任何角来旋转块,但似乎设置枢轴点实际上重新定位了节点,使点完全保持在原点...

例如

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,我会想象这个块位于地板上方1个单位...如果你不这样做就会这样做设置枢轴。

真正的问题是,你如何设置这个节点的枢轴位置,而不影响它的位置,所以如果我按下右键,它会围绕最右下角的z轴旋转,如果我按下左键,它将绕最左下方的点旋转,上下相同,但在x轴上。

1 个答案:

答案 0 :(得分:2)

pivot的{​​{1}}属性类似于SCNNode的{​​{1}}(请参阅Anchor Points Affect Geometric Manipulations)。如果您希望更改anchorPoint属性不会产生任何视觉效果,则您还必须更改其CALayer(或pivot)属性。