温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

NVisionXR_iOS教程七 —— 场景中物体运动

发布时间:2020-06-02 01:16:43 来源:网络 阅读:498 作者:NVisionXR 栏目:移动开发

本章节教大家如何让立方体按照自己想要的轨迹运动。 
添加头文件#import''NVAnimationEffect.h'',在onCreate方法中实例该动画类,代码如下图: 
1、立方体移动 
NVisionXR_iOS教程七 —— 场景中物体运动 
代码: 
 

   /**       * 构建一个NVAnimationEffect对象       * name 可以随便取,但是要唯一       * context 传入场景即可       * widget 作用的NVWidget对象,本例传入的是立方体       * duration 运动的总时长       */      NVAnimationEffect *move = [[NVAnimationEffect alloc] initWithAnimation:@"moveAni" Context:self Widget:cube Duration:4.0];            // 设置关键帧      // 在4秒内从(0,0,0)的位置线形的移动到(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];          // 是否循环播放动画      [move setLoop:YES];          // 将动画对象添加到场景中      [self addAnimEffect:move];         // 开始执行运动      [move start];



2、立方体边移动边缩放 
NVisionXR_iOS教程七 —— 场景中物体运动 
代码: 
  

 // 设置关键帧      // 在4秒内从(0,0,0)的位置线形的移动到(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];            // 新开一个运动轨道,在4秒内从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、立方体边移动边缩放边自旋转 
NVisionXR_iOS教程七 —— 场景中物体运动 
代码: 
    

// 设置关键帧      // 在4秒内从(0,0,0)的位置线形的移动到(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];            // 新开一个运动轨道,在4秒内从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];            // 新开一个运动轨道,在4秒内绕z轴旋转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方法中实例该轨迹类,代码如图 
NVisionXR_iOS教程七 —— 场景中物体运动 NVisionXR_iOS教程七 —— 场景中物体运动
代码: 
 

 /**        * startPoint 轨迹的起始点       * controlPoint1 控制点1       * controlPoint2 控制点2       * startPoint 轨迹的结束点       **/      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);      // 实例话贝塞尔曲线对象      mMainPath = [[NVBezierPath alloc] initWithBezier:mContext Name:@"BezierPath"];      // 设置曲线的精细程度      [mMainPath setSubdivision:mSubdivision];      // 设置贝塞尔轨迹起始点      [mMainPath setPoints:startPoint EndPoint:endPoint];      // 设置控制点      [mMainPath setControlPoints:controlPoint1 Point2:controlPoint2];      // 描边绘制      [mMainPath stroke];     // 实例话动画对象       NVAnimationEffect *move = [[NVAnimationEffect alloc] initWithAnimation:@"moveAni" Context:self Widget:cube Duration:4.0];      // 将贝塞尔曲线设置到动画中      [move selectPath:mMainPath Type:TRANSLATE];      // 是否循环播放动画      [move setLoop:YES];            // 将动画对象添加到场景中      [self addAnimEffect:move];            // 开始执行运动      [move start];



运行项目,可以看到立方体按照自己设置的轨迹运动起来了。 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI