SCeneKit 学习(3)--SCNAction

SCNAction : 动画

  1. SCNAction: 行为动画
  2. 移动
  3. 旋转,
  4. 缩放,
  5. 透明度,
  6. 隐藏或者不隐藏,
  7. 等待,
  8. 节点删除
  9. 上代码,看效果
- (void)viewDidLoad {
[super viewDidLoad];
//1. 创建View
SCNView *scnView = [[SCNView alloc] initWithFrame:self.view.bounds];
scnView.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:scnView];
//2. 创建场景
SCNScene *scene = [SCNScene scene];
scnView.scene = scene;
// 3. 创建球体
SCNSphere *sphere = [SCNSphere sphereWithRadius:0.5];
sphere.firstMaterial.diffuse.contents = @"earth.jpg";
SCNNode *earthNode = [SCNNode nodeWithGeometry:sphere];
[scene.rootNode addChildNode:earthNode];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 移动
SCNAction *moveAction = [SCNAction moveTo:SCNVector3Make(0, 1, 0) duration:1.f];
SCNAction *moveByAction = [SCNAction moveBy:SCNVector3Make(0, 1, 0) duration:1.f];
SCNAction *moveByX = [SCNAction moveByX:1 y:1 z:1 duration:2];
// 旋转
SCNAction *roteAction = [SCNAction rotateByX:1 y:1 z:0 duration:2];
SCNAction *rotebyangelAction = [SCNAction rotateByAngle:10 aroundAxis:SCNVector3Make(0, 1, 0) duration:2];

// 放大
SCNAction *scale = [SCNAction scaleTo:1.2 duration:1];
SCNAction *scale1 = [SCNAction scaleTo:1. duration:1];

// 透明度
// SCNAction *fadeinAction = [SCNAction fadeInWithDuration:2];
SCNAction *fadeoutAction = [SCNAction fadeOutWithDuration:2];
SCNAction *fadetoAction = [SCNAction fadeOpacityTo:0.2 duration:1];
SCNAction *fadebyAction = [SCNAction fadeOpacityBy:1 duration:1];
//隐藏,显示
SCNAction *hiddenMoon = [SCNAction hide];
SCNAction *unhiddenMoon = [SCNAction unhide];
// 把多个行为放到一个数组中一个一个执行
SCNAction *seque = [SCNAction sequence:@[fadetoAction,fadebyAction]];
SCNAction *seque1 = [SCNAction sequence:@[scale,scale1]];

//把多个行为捆绑到一起执行
SCNAction *group = [SCNAction group:@[seque,rotebyangelAction,seque1]];
SCNAction *runever = [SCNAction repeatActionForever:group];
[earthNode runAction:runever];
});

// 运行操作运动摄像机
scnView.allowsCameraControl = YES;
// 抗锯齿(会比较消耗系统性能)
scnView.antialiasingMode = SCNAntialiasingModeMultisampling4X;
// 添加一个相机节点
SCNNode *cameraNode = [SCNNode node];
SCNCamera *camera = [SCNCamera camera];
camera.automaticallyAdjustsZRange = YES;
cameraNode.camera = camera;
cameraNode.position = SCNVector3Make(0, 0, 5);
[scene.rootNode addChildNode:cameraNode];
// // 设置游戏帧率
scnView.preferredFramesPerSecond = 60;
// 打开统计菜单
scnView.showsStatistics = YES;
scnView.debugOptions = SCNDebugOptionShowLightInfluences;
}


效果:


31986831-065c-4f1c-9b8d-2a2446b5fc4a.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,010评论 3 119
  • 时光是个好东西,因为它记录着人们的喜怒与哀乐,而比时光还好的东西就只能是记忆了。看着窗外地面上积的雪,闻着厨房里飘...
    谷理想阅读 200评论 0 2
  • 中国文字如此妙趣横生 周瑜与诸葛亮有一段精彩的对话。周瑜十分嫉妒诸葛亮的才智,总想找借口杀他。在一次宴会上,周瑜对...
    闻方培训师阅读 429评论 0 1
  • 儿子上初中后和我顶撞的特厉害。我说一句他有成千上万个理由等着你。本来儿子特别爱我,走到哪还像小时候那样拉...
    可乐开心阅读 212评论 0 0
  • 本文由作者三汪首发于简书。历史解题记录已同步更新github. 题目 Problem Description:Gi...
    三汪阅读 552评论 0 0