本章節(jié)教大家如何讓立方體按照自己想要的軌跡運(yùn)動(dòng)。
添加頭文件#import''NVAnimationEffect.h'',在onCreate方法中實(shí)例該動(dòng)畫類,代碼如下圖:
1、立方體移動(dòng)
代碼:
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的平陸網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
/** * 構(gòu)建一個(gè)NVAnimationEffect對(duì)象 * name 可以隨便取,但是要唯一 * context 傳入場(chǎng)景即可 * widget 作用的NVWidget對(duì)象,本例傳入的是立方體 * duration 運(yùn)動(dòng)的總時(shí)長(zhǎng) */ NVAnimationEffect *move = [[NVAnimationEffect alloc] initWithAnimation:@"moveAni" Context:self Widget:cube Duration:4.0]; // 設(shè)置關(guān)鍵幀 // 在4秒內(nèi)從(0,0,0)的位置線形的移動(dòng)到(0,10,0)的位置 [move createKeyFrameWithTimePos:0 Pos:NVPosition(0.0, 0.0, 0.0) Type:TRANSLATE]; [move createKeyFrameWithTimePos:4 Pos:NVPosition(0.0, 10.0, 0.0) Type:TRANSLATE]; // 是否循環(huán)播放動(dòng)畫 [move setLoop:YES]; // 將動(dòng)畫對(duì)象添加到場(chǎng)景中 [self addAnimEffect:move]; // 開始執(zhí)行運(yùn)動(dòng) [move start];
2、立方體邊移動(dòng)邊縮放
代碼:
// 設(shè)置關(guān)鍵幀 // 在4秒內(nèi)從(0,0,0)的位置線形的移動(dòng)到(0,10,0)的位置 [move createKeyFrameWithTimePos:0 Pos:NVPosition(0.0, 0.0, 0.0) Type:TRANSLATE]; [move createKeyFrameWithTimePos:4 Pos:NVPosition(0.0, 10.0, 0.0) Type:TRANSLATE]; // 新開一個(gè)運(yùn)動(dòng)軌道,在4秒內(nèi)從1倍放大到5倍 [move createKeyFrameWithTimePos:0 Pos:NVPosition(1.0, 1.0, 1.0) Type:SCALE]; [move createKeyFrameWithTimePos:4 Pos:NVPosition(5.0, 5.0, 5.0) Type:SCALE];
3、立方體邊移動(dòng)邊縮放邊自旋轉(zhuǎn)
代碼:
// 設(shè)置關(guān)鍵幀 // 在4秒內(nèi)從(0,0,0)的位置線形的移動(dòng)到(0,10,0)的位置 [move createKeyFrameWithTimePos:0 Pos:NVPosition(0.0, 0.0, 0.0) Type:TRANSLATE]; [move createKeyFrameWithTimePos:4 Pos:NVPosition(0.0, 10.0, 0.0) Type:TRANSLATE]; // 新開一個(gè)運(yùn)動(dòng)軌道,在4秒內(nèi)從1倍放大到5倍 [move createKeyFrameWithTimePos:0 Pos:NVPosition(1.0, 1.0, 1.0) Type:SCALE]; [move createKeyFrameWithTimePos:4 Pos:NVPosition(5.0, 5.0, 5.0) Type:SCALE]; // 新開一個(gè)運(yùn)動(dòng)軌道,在4秒內(nèi)繞z軸旋轉(zhuǎn)360度 [move createKeyFrameWithTimePos:0 Pos:NVPosition(0.0, 0.0, 0.0) Type:ROTATION]; [move createKeyFrameWithTimePos:4 Pos:NVPosition(0.0, 0.0, 360.0) Type:ROTATION];
4、貝塞爾曲線
添加頭文件#import''NVBezierPath.h'', 在onCreate方法中實(shí)例該軌跡類,代碼如圖
代碼:
/** * startPoint 軌跡的起始點(diǎn) * controlPoint1 控制點(diǎn)1 * controlPoint2 控制點(diǎn)2 * startPoint 軌跡的結(jié)束點(diǎn) **/ NVVector3f startPoint = NVPosition(10.0, 0, 5.5); NVVector3f controlPoint1 = NVPosition(6.0, 0, 3.5); NVVector3f controlPoint2 = NVPosition(8.0, 0, 4.5); NVVector3f endPoint = NVPosition(10.0, 0, 0.0); // 實(shí)例話貝塞爾曲線對(duì)象 mMainPath = [[NVBezierPath alloc] initWithBezier:mContext Name:@"BezierPath"]; // 設(shè)置曲線的精細(xì)程度 [mMainPath setSubdivision:mSubdivision]; // 設(shè)置貝塞爾軌跡起始點(diǎn) [mMainPath setPoints:startPoint EndPoint:endPoint]; // 設(shè)置控制點(diǎn) [mMainPath setControlPoints:controlPoint1 Point2:controlPoint2]; // 描邊繪制 [mMainPath stroke]; // 實(shí)例話動(dòng)畫對(duì)象 NVAnimationEffect *move = [[NVAnimationEffect alloc] initWithAnimation:@"moveAni" Context:self Widget:cube Duration:4.0]; // 將貝塞爾曲線設(shè)置到動(dòng)畫中 [move selectPath:mMainPath Type:TRANSLATE]; // 是否循環(huán)播放動(dòng)畫 [move setLoop:YES]; // 將動(dòng)畫對(duì)象添加到場(chǎng)景中 [self addAnimEffect:move]; // 開始執(zhí)行運(yùn)動(dòng) [move start];
運(yùn)行項(xiàng)目,可以看到立方體按照自己設(shè)置的軌跡運(yùn)動(dòng)起來了。
網(wǎng)頁題目:NVisionXR_iOS教程七——場(chǎng)景中物體運(yùn)動(dòng)
文章來源:http://aaarwkj.com/article48/igehep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、微信小程序、網(wǎng)站策劃、、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)