SCNAction : 動畫
- SCNAction: 行為動畫
- 移動
- 旋轉(zhuǎn),
- 縮放,
- 透明度,
- 隱藏或者不隱藏,
- 等待,
- 節(jié)點刪除
- 上代碼,看效果
- (void)viewDidLoad {
[super viewDidLoad];
//1. 創(chuàng)建View
SCNView *scnView = [[SCNView alloc] initWithFrame:self.view.bounds];
scnView.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:scnView];
//2. 創(chuàng)建場景
SCNScene *scene = [SCNScene scene];
scnView.scene = scene;
// 3. 創(chuàng)建球體
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];
// 旋轉(zhuǎn)
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];
// 把多個行為放到一個數(shù)組中一個一個執(zhí)行
SCNAction *seque = [SCNAction sequence:@[fadetoAction,fadebyAction]];
SCNAction *seque1 = [SCNAction sequence:@[scale,scale1]];
//把多個行為捆綁到一起執(zhí)行
SCNAction *group = [SCNAction group:@[seque,rotebyangelAction,seque1]];
SCNAction *runever = [SCNAction repeatActionForever:group];
[earthNode runAction:runever];
});
// 運行操作運動攝像機(jī)
scnView.allowsCameraControl = YES;
// 抗鋸齒(會比較消耗系統(tǒng)性能)
scnView.antialiasingMode = SCNAntialiasingModeMultisampling4X;
// 添加一個相機(jī)節(jié)點
SCNNode *cameraNode = [SCNNode node];
SCNCamera *camera = [SCNCamera camera];
camera.automaticallyAdjustsZRange = YES;
cameraNode.camera = camera;
cameraNode.position = SCNVector3Make(0, 0, 5);
[scene.rootNode addChildNode:cameraNode];
// // 設(shè)置游戲幀率
scnView.preferredFramesPerSecond = 60;
// 打開統(tǒng)計菜單
scnView.showsStatistics = YES;
scnView.debugOptions = SCNDebugOptionShowLightInfluences;
}
效果:

31986831-065c-4f1c-9b8d-2a2446b5fc4a.gif