繁体   English   中英

无限旋转SCNNode 360​​°

[英]Rotate SCNNode infinitely 360°

我正在寻找一种绕着z轴旋转360度音符的方法。 保持摄像机的节点沿z轴负向移动,不允许改变其y和z。 我已经尝试过CABasicAnimation ,但没有成功。

有谁能指出我的解决方案?

如何将其旋转小于360°? 由于你的标题是“无限”,它应该可以正常工作,并且一遍又一遍地重复动画将会提升360°甚至更高。

另外,你可以看看Apple默认的SceneKit项目,它对我很有用:

[cameraNode runAction:[SCNAction repeatActionForever:[SCNAction rotateByX:0 y:.5 z:0 duration:1]]];

或者,对于OSX:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"rotation"];
animation.toValue = [NSValue valueWithSCNVector4:SCNVector4Make(0, 0, 1, M_PI*2)];
animation.duration = 15;
animation.repeatCount = MAXFLOAT; //repeat forever
[YOURNODE addAnimation:animation forKey:nil];
[[ZnodeOnly physicsBody] setVelocityFactor:SCNVector3Make(0, 0, 1)];

[[ZnodeOnly physicsBody] setAngularVelocityFactor:SCNVector3Make(0, 0, 1)];

[RotatingNode runAction:[SCNAction repeatActionForever:[SCNAction rotateByAngle:-360/(180/M_PI) aroundAxis:SCNVector3Make(0, 0, 1) duration:1]]];

[node setRotation:(x,y,z, w)]是即时变换。 使用SCNAction动画旋转。

沿z轴永久旋转对象。

let node = SCNNode()
self.sceneView.scene.rootNode.addChildNode(node)
//creating an box object
node.geometry = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
node.geometry?.firstMaterial?.diffuse.contents = UIColor.blue
node.position = SCNVector3(0,0,0)
//adding a rotation by Z axis        
let action = SCNAction.rotateBy(x: 0, y: 0, z: CGFloat(GLKMathDegreesToRadians(360)), duration: 8)
let forever = SCNAction.repeatForever(action)
node.runAction(forever)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM