美文网首页
IOS 学习AR(4)( 3D引擎 SceneKit SCN

IOS 学习AR(4)( 3D引擎 SceneKit SCN

作者: 升哥_d84b | 来源:发表于2018-04-23 14:32 被阅读0次

SCNAction类,总结下一共:位置移动动画,循转动画,放大缩小动画,自定义动画(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.旋转

//旋转相对于当前位置

+ (SCNAction *)rotateByX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration;

+ (SCNAction *)rotateByAngle:(CGFloat)angle aroundAxis:(SCNVector3)axis duration:(NSTimeInterval)duration;

//旋转指定位置

+ (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.多个动画按照顺序执行

+ (SCNAction *)sequence:(NSArray *)actions;

5.多个动画按照一起执行

6.执行次数

+ (SCNAction *)repeatAction:(SCNAction *)action count:(NSUInteger)count;

7.一直执行

+ (SCNAction *)repeatActionForever:(SCNAction *)action;

8.消失出现

//默认node.opacity为1.0

//出现

+ (SCNAction *)fadeInWithDuration:(NSTimeInterval)sec;

//消失

+ (SCNAction *)fadeOutWithDuration:(NSTimeInterval)sec;

9.等待几秒后执行

+ (SCNAction *)waitForDuration:(NSTimeInterval)sec;

等待几秒到几秒之间执行

+ (SCNAction *)waitForDuration:(NSTimeInterval)sec withRange:(NSTimeInterval)durationRange;

10.移除node

+ (SCNAction *)removeFromParentNode;

11.执行动画

+ (SCNAction *)runBlock:(void (^)(SCNNode *node))block;

+ (SCNAction *)runBlock:(void (^)(SCNNode *node))block queue:(dispatch_queue_t)queue;

代码:

//创建图片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]];

//永久执行

    [planeNode runAction:[SCNAction repeatActionForever:group]];

相关文章

网友评论

      本文标题:IOS 学习AR(4)( 3D引擎 SceneKit SCN

      本文链接:https://www.haomeiwen.com/subject/jtvklftx.html