U3D中实现场景自动游览的效果

匿名 (未验证) 提交于 2019-12-03 00:26:01
最近在做一个场景展示的项目,需要实现自动游览的效果,即摄像机在场景中预设好的点之间进行自动移动,觉得网上应该有现成的,竟然没找到。只能自力更生了,不过难度不大。大体思路为:
  1. 设置目标点
  2. 判断当前位置是否到达下一个目标点
  3. 若是,改变相机朝向,否则往前移动。
上代码:
            private float speed = 5f;   //移动速度             private bool isShow = false;    //标志位,当按下按键时开始自动浏览             private int i = 0;    //到目标点后,加一             private float[,] curPosition = new float[5, 3];    //二维数组用于存储游览点的序号和位置信息,其中curPosition表示当前点信息             private float[,] storePositon = new float[5, 3]         {{1f,3f,4f} ,    //存储所有点的信息                         {6f,3f,1f} ,                         {5f,3f,2f} ,                         {5f,3f,4f} ,                         {4f,3f,4f}} ;
在Start()方法中,初始化curPosition
                        for(int i = 0; i < curPosition.GetLength(0);i++)         //GetLength返回行列                               {                              for(int j = 0; j < curPosition.GetLength(1); j++)                               {                                     curPosition [i,j] = storePositon[i,j];            //先赋值相机的初始化点                                }                          }
Update()方法中
                 
       if (Input.GetKey (KeyCode.Y))         isShow = true;         if(isShow)          {           if (i == storePositon.GetLength (0)-1)       //游览完毕            return; //当前相机的位置十分接近目标位置,无法保证准确重合,因此给予0.05的波动范围         if (((transform.position.x <= storePositon[i,0]-0.05f) || (transform.position.x >=  storePositon[i,0]+0.05f)) ||           ((transform.position.z <= storePositon[i,2]-0.05f) ||  (transform.position.z >= storePositon[i,2]+0.05f)))                {                   transform.Translate(Vector3.forward * Time.deltaTime *speed);               }                else               {                   transform.position = new Vector3 (storePositon [i, 0], storePositon  [i, 1], storePositon [i, 2]);    //调整相机位置,保证LookAt()的角度准确性                   Vector3 ps = new Vector3 (storePositon [i+1, 0], storePositon [i+1,  1], storePositon [i+1, 2]);                   transform.LookAt (ps);                   ++i;               }          }
把代码挂载到相机上即可,由于场景是公司项目,不便展示,因此随便搭了一个场景,有需要的可以下载看看。

https://download.csdn.net/download/s1314_jhc/10477057

自动游览的效果如下


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!