SCeneKit 學(xué)習(xí)(3)--SCNAction

SCNAction : 動畫

  1. SCNAction: 行為動畫
  2. 移動
  3. 旋轉(zhuǎn),
  4. 縮放,
  5. 透明度,
  6. 隱藏或者不隱藏,
  7. 等待,
  8. 節(jié)點刪除
  9. 上代碼,看效果
- (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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,172評論 3 119
  • 時光是個好東西,因為它記錄著人們的喜怒與哀樂,而比時光還好的東西就只能是記憶了??粗巴獾孛嫔戏e的雪,聞著廚房里飄...
    谷理想閱讀 211評論 0 2
  • 中國文字如此妙趣橫生 周瑜與諸葛亮有一段精彩的對話。周瑜十分嫉妒諸葛亮的才智,總想找借口殺他。在一次宴會上,周瑜對...
    聞方培訓(xùn)師閱讀 511評論 0 1
  • 兒子上初中后和我頂撞的特厲害。我說一句他有成千上萬個理由等著你。本來兒子特別愛我,走到哪還像小時候那樣拉...
    可樂開心閱讀 227評論 0 0
  • 本文由作者三汪首發(fā)于簡書。歷史解題記錄已同步更新github. 題目 Problem Description:Gi...
    三汪閱讀 605評論 0 0

友情鏈接更多精彩內(nèi)容