SCNAction類浦徊,總結(jié)下一共:位置移動動畫媒楼,循轉(zhuǎn)動畫,放大縮小動畫雳刺,自定義動畫(javascript)劫灶。
1.位置移動
//移動相對位置
+ (SCNAction *)moveByX:(CGFloat)deltaX y:(CGFloat)deltaY z:(CGFloat)deltaZ duration:(NSTimeInterval)duration;
+ (SCNAction *)moveBy:(SCNVector3)delta duration:(NSTimeInterval)duration;
//移動指定位置
+ (SCNAction *)moveTo:(SCNVector3)location duration:(NSTimeInterval)duration;
2.旋轉(zhuǎn)
//旋轉(zhuǎn)相對于當(dāng)前位置
+ (SCNAction *)rotateByX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration;
+ (SCNAction *)rotateByAngle:(CGFloat)angle aroundAxis:(SCNVector3)axis duration:(NSTimeInterval)duration;
//旋轉(zhuǎn)指定位置
+ (SCNAction *)rotateToX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration;
+ (SCNAction *)rotateToX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration shortestUnitArc:(BOOL)shortestUnitArc;
+ (SCNAction *)rotateToAxisAngle:(SCNVector4)axisAngle duration:(NSTimeInterval)duration;
3.縮小放大
//縮小放大相對位置
+ (SCNAction *)scaleBy:(CGFloat)scale duration:(NSTimeInterval)sec;
//縮小放大指定位置
+ (SCNAction *)scaleTo:(CGFloat)scale duration:(NSTimeInterval)sec;
4.多個動畫按照順序執(zhí)行
+ (SCNAction *)sequence:(NSArray *)actions;
5.多個動畫按照一起執(zhí)行
6.執(zhí)行次數(shù)
+ (SCNAction *)repeatAction:(SCNAction *)action count:(NSUInteger)count;
7.一直執(zhí)行
+ (SCNAction *)repeatActionForever:(SCNAction *)action;
8.消失出現(xiàn)
//默認(rèn)node.opacity為1.0
//出現(xiàn)
+ (SCNAction *)fadeInWithDuration:(NSTimeInterval)sec;
//消失
+ (SCNAction *)fadeOutWithDuration:(NSTimeInterval)sec;
9.等待幾秒后執(zhí)行
+ (SCNAction *)waitForDuration:(NSTimeInterval)sec;
等待幾秒到幾秒之間執(zhí)行
+ (SCNAction *)waitForDuration:(NSTimeInterval)sec withRange:(NSTimeInterval)durationRange;
10.移除node
+ (SCNAction *)removeFromParentNode;
11.執(zhí)行動畫
+ (SCNAction *)runBlock:(void (^)(SCNNode *node))block;
+ (SCNAction *)runBlock:(void (^)(SCNNode *node))block queue:(dispatch_queue_t)queue;
代碼:
//創(chuàng)建圖片node
????SCNPlane *plane = [SCNPlane planeWithWidth:10 height:10];
? ? plane.firstMaterial.diffuse.contents = [UIImage imageNamed:@"1"];
? ? SCNNode *planeNode = [SCNNode nodeWithGeometry:plane];
? ? planeNode.position =SCNVector3Make(0, 0, 0);
? ? [self.scnView.scene.rootNode addChildNode:planeNode];
//左右搖擺動畫
? ? SCNAction *action = [SCNAction rotateToX:0 y:0 z:0.5 duration:0.5];
? ? SCNAction *action1 = [SCNAction rotateToX:0 y:0 z:-0.5 duration:0.5];
? ? SCNAction *sequence =[SCNAction sequence:@[action,action1]];
//上下移動動畫
? ? SCNAction *action2 = [SCNAction moveTo:SCNVector3Make(0, 10, 0) duration:0.5];
? ? SCNAction *action3 = [SCNAction moveTo:SCNVector3Make(0, -10, 0) duration:0.5];
? ? SCNAction *sequence2 =[SCNAction sequence:@[action2,action3]];
//動畫組
? ? SCNAction *group = [SCNAction group:@[sequence,sequence2]];
//永久執(zhí)行
? ? [planeNode runAction:[SCNAction repeatActionForever:group]];