【问题标题】:Scene Kit Animation场景套件动画
【发布时间】:2012-08-14 13:28:19
【问题描述】:

有人知道为什么我不能让这个简单的动画工作吗?它只是不播放。

self.scene = [SCNScene scene];

SCNNode *sun = [SCNNode nodeWithGeometry:[SCNSphere sphereWithRadius:5.0]];
SCNNode *moon = [SCNNode nodeWithGeometry:[SCNSphere sphereWithRadius:2.0]];

moon.position = SCNVector3Make(7.0, 7.0, 7.0);
moon.pivot = CATransform3DMakeTranslation(-7.0, -7.0, -7.0);

CABasicAnimation *startAnim = [CABasicAnimation animationWithKeyPath:@"rotation"];
startAnim.duration = 5;
startAnim.repeatCount = MAXFLOAT;
startAnim.toValue =[NSValue valueWithSCNVector4:SCNVector4Make(0.0, 0.0, 0.0,1.0)];
startAnim.timingFunction =[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

[moon addAnimation:startAnim forKey:@"rotate"];
[sun addChildNode:moon];
[[self.scene rootNode] addChildNode:sun];

我认为问题是......

 startAnim.toValue =[NSValue valueWithSCNVector4:SCNVector4Make(0.0, 0.0, 0.0,1.0)];

干杯

【问题讨论】:

  • 您是否在您的 SCNView 上调用了 play,或者将其设置为在 xib 中自动播放?

标签: macos scenekit


【解决方案1】:

确实 SCNVector4Make(0.0, 0.0, 0.0,1.0) 不是有效的旋转。 “旋转”是由 4 个浮点 {x y z w} 组成的轴角。 前 3 个浮点数 x y z 代表轴,w 是以弧度为单位的旋转。 所以 (0.0, 0.0, 0.0) 不是一个有效的轴(或者在最好的情况下它代表一个空旋转)

【讨论】:

  • 谢谢,虽然如果我对轴和旋转使用了任何数字,它仍然没有动画。
【解决方案2】:

我也无法让您的示例使用“旋转”键路径,但我可以使用“转换”。例如:

CABasicAnimation *startAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
startAnim.duration = 5;
startAnim.repeatCount = MAXFLOAT;
startAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(3.14, 0.0, 1.0, 0.0)];
startAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[moon addAnimation:startAnim forKey:@"transform"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2014-03-02
    • 2015-04-07
    • 2017-10-09
    • 2016-01-03
    相关资源
    最近更新 更多