NVisionXR_iOS教程七 —— 场景中物体运动
本章节教大家如何让立方体按照自己想要的轨迹运动。
添加头文件#import''NVAnimationEffect.h'',在onCreate方法中实例该动画类,代码如下图:
1、立方体移动
代码:
/***构建一个NVAnimationEffect对象*name可以随便取,但是要唯一*context传入场景即可*widget作用的NVWidget对象,本例传入的是立方体*duration运动的总时长*/NVAnimationEffect*move=[[NVAnimationEffectalloc]initWithAnimation:@"moveAni"Context:selfWidget:cubeDuration:4.0];//设置关键帧//在4秒内从(0,0,0)的位置线形的移动到(0,10,0)的位置[movecreateKeyFrameWithTimePos:0Pos:NVPosition(0.0,0.0,0.0)Type:TRANSLATE];[movecreateKeyFrameWithTimePos:4Pos:NVPosition(0.0,10.0,0.0)Type:TRANSLATE];//是否循环播放动画[movesetLoop:YES];//将动画对象添加到场景中[selfaddAnimEffect:move];//开始执行运动[movestart];
2、立方体边移动边缩放
代码:
//设置关键帧//在4秒内从(0,0,0)的位置线形的移动到(0,10,0)的位置[movecreateKeyFrameWithTimePos:0Pos:NVPosition(0.0,0.0,0.0)Type:TRANSLATE];[movecreateKeyFrameWithTimePos:4Pos:NVPosition(0.0,10.0,0.0)Type:TRANSLATE];//新开一个运动轨道,在4秒内从1倍放大到5倍[movecreateKeyFrameWithTimePos:0Pos:NVPosition(1.0,1.0,1.0)Type:SCALE];[movecreateKeyFrameWithTimePos:4Pos:NVPosition(5.0,5.0,5.0)Type:SCALE];
3、立方体边移动边缩放边自旋转
代码:
//设置关键帧//在4秒内从(0,0,0)的位置线形的移动到(0,10,0)的位置[movecreateKeyFrameWithTimePos:0Pos:NVPosition(0.0,0.0,0.0)Type:TRANSLATE];[movecreateKeyFrameWithTimePos:4Pos:NVPosition(0.0,10.0,0.0)Type:TRANSLATE];//新开一个运动轨道,在4秒内从1倍放大到5倍[movecreateKeyFrameWithTimePos:0Pos:NVPosition(1.0,1.0,1.0)Type:SCALE];[movecreateKeyFrameWithTimePos:4Pos:NVPosition(5.0,5.0,5.0)Type:SCALE];//新开一个运动轨道,在4秒内绕z轴旋转360度[movecreateKeyFrameWithTimePos:0Pos:NVPosition(0.0,0.0,0.0)Type:ROTATION];[movecreateKeyFrameWithTimePos:4Pos:NVPosition(0.0,0.0,360.0)Type:ROTATION];
4、贝塞尔曲线
添加头文件#import''NVBezierPath.h'',在onCreate方法中实例该轨迹类,代码如图
代码:
/***startPoint轨迹的起始点*controlPoint1控制点1*controlPoint2控制点2*startPoint轨迹的结束点**/NVVector3fstartPoint=NVPosition(10.0,0,5.5);NVVector3fcontrolPoint1=NVPosition(6.0,0,3.5);NVVector3fcontrolPoint2=NVPosition(8.0,0,4.5);NVVector3fendPoint=NVPosition(10.0,0,0.0);//实例话贝塞尔曲线对象mMainPath=[[NVBezierPathalloc]initWithBezier:mContextName:@"BezierPath"];//设置曲线的精细程度[mMainPathsetSubdivision:mSubdivision];//设置贝塞尔轨迹起始点[mMainPathsetPoints:startPointEndPoint:endPoint];//设置控制点[mMainPathsetControlPoints:controlPoint1Point2:controlPoint2];//描边绘制[mMainPathstroke];//实例话动画对象NVAnimationEffect*move=[[NVAnimationEffectalloc]initWithAnimation:@"moveAni"Context:selfWidget:cubeDuration:4.0];//将贝塞尔曲线设置到动画中[moveselectPath:mMainPathType:TRANSLATE];//是否循环播放动画[movesetLoop:YES];//将动画对象添加到场景中[selfaddAnimEffect:move];//开始执行运动[movestart];
运行项目,可以看到立方体按照自己设置的轨迹运动起来了。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。