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

最近在做一个场景展示的项目,需要实现自动游览的效果,即摄像机在场景中预设好的点之间进行自动移动,觉得网上应该有现成的,竟然没找到。只能自力更生了,不过难度不大。大体思路为:
  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

自动游览的效果如下


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值