查看: 2900|回复: 4
打印 上一主题 下一主题

[教程] 如何使用Unity制作虚拟导览(十)

[复制链接]

955

主题

164

听众

7万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
59338
精华
28

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

跳转到指定楼层
楼主
发表于 2014-3-22 22:44:14 |只看该作者 |倒序浏览
如何使用Unity制作虚拟导览(一)
http://www.narkii.com/club/thread-316986-1.html

如何使用Unity制作虚拟导览(二)
http://www.narkii.com/club/thread-316987-1.html

如何使用Unity制作虚拟导览(三)

http://www.narkii.com/club/thread-317011-1.html

如何使用Unity制作虚拟导览(四)
http://www.narkii.com/club/thread-317013-1.html

如何使用Unity制作虚拟导览(五)
http://www.narkii.com/club/thread-317451-1.html

如何使用Unity制作虚拟导览(六)
http://www.narkii.com/club/thread-317503-1.html

如何使用Unity制作虚拟导览(七)
http://www.narkii.com/club/thread-317769-1.html

如何使用Unity制作虚拟导览(八)
http://www.narkii.com/club/thread-317865-1.html

如何使用Unity制作虚拟导览(九)
http://www.narkii.com/club/thread-318064-1.html

在前面的案例中我们介绍了KGFCameraSystem的多相机操作,有的朋友询问如何用代码做到类似的效果,也就是在场景内放置不同的相机位置,按下按钮后相机能平滑的移到另一个位置,或是从第三人称的视角换成不同的相机进行导览。

首先下载所需的案例文件:
Modern Interior Pack - 室内空间资源包
http://www.narkii.com/club/thread-301751-1.html

如图所示,将资源导入后,我们发现场景的烘培与贴图似乎是出了问题,导致呈现的效果与资源的图片差距甚大,原因是该作者是用了3.x烘培,导致输出后在Unity4.x发生了不匹配的情况。

1.png

解决的方法是使用Lightmapping重新烘培,将Final Gather Rays设置为200,,以避免浪费太多的渲染时间,Resolution设置为40或是50即可,按下Bake Scene进行场景的烘培。

2.png

烘培后的场景就完全正常了,将场景先保存起来,准备开始进行后续的设置工作。

3.png

在场景内设置几个相机,然后将其命名为camera1与camera2之类,相机的Depth可以不用设置顺序,这个部分完全交由脚本来控制即可。

4.png
5.png

新增一个C#脚本,将其名称设置为switchCamera,然后写入以下的代码:
  1. using UnityEngine;
  2. using System.Collections;
  3. public class switchCamera : MonoBehaviour {

  4. public Camera[] cameraList;
  5. private int index = 0;

  6. void Start(){
  7.       foreach (Camera cam in cameraList){
  8.           cam.enabled = false;
  9.       }
  10.           cameraList[index].enabled = true;
  11.         }

  12. void OnGUI(){ // 设置GUI按钮来切换相机位置
  13.       if(GUI.Button (new Rect(Screen.width - 105,5,100,20),"Next Camera")){
  14.           cameraList[index].enabled = false;
  15.               index = (index +1) % cameraList.Length;
  16.           cameraList[index].enabled = true;
  17.         }
  18.    }
  19. }
复制代码
保存代码后,增加一个空的Game Object后,将switchCamera脚本添加进来,如图所示,在Size的地方输入所有的相机数量,再将相机指定到每一个栏位。

6.png

进行测试,按下右上方的Next Camera即可切换相机的视角。

7.png

在上面的操作中,我们设置了很简单的方法来实现相机视角的切换,每点击一次即可更换一次,但是这样的视角切换显得太过于突然,我们希望通过另外一种方式来实现相机在切换时的平滑过渡。

新增一个switchCameraEasing的C#脚本,写入以下的代码:
  1. using UnityEngine;
  2. using System.Collections;
  3. public class switchCameraEasing : MonoBehaviour {
  4.         public Camera[] cameraList;
  5.         public Camera cameraMaster;
  6.         private float easeSpeed = 0.125f;
  7.         private int index = 0;
  8.         void Start () {
  9.                 foreach (Camera cam in cameraList){
  10.                         cam.enabled = false;
  11.                 }
  12.                 cameraMaster.enabled = true;
  13.         }
  14.         

  15.         void Update () {  //每帧执行一次
  16.                 cameraMaster.transform.position = Vector3.Lerp
  17.                         (cameraMaster.transform.position,cameraList
  18.                          [index].transform.position,easeSpeed); //相机位置的平滑过度

  19.                 cameraMaster.transform.rotation = Quaternion.Lerp
  20.                         (cameraMaster.transform.localRotation,cameraList
  21.                          [index].transform.localRotation,easeSpeed); //相机旋转角度的平滑过度
  22.         }

  23.         void OnGUI(){
  24.                 if (GUI.Button(new Rect (Screen.width - 105, 5,100, 20)
  25.                                , "Next Camera")){
  26.                         index = (index + 1) % cameraList.Length;
  27.                 }
  28.         }
  29. }
复制代码
将脚本添加到GameObject,然后在Size的地方设置相机的数量,Camera Master为主要移动的相机。

8.png

进行测试,在按下Next Camera进行相机切换时,相机将以平滑的过度方式移动到下一个位置,这种效果明显比switchCamera的单一切换功能来的更为生动。

9.png
10.png
11.png

更多的技术分享与讨论请加入:
纳金网3dsmax技术交流群 - 284146304
纳金网Unity技术交流群 - 218689657


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

ku 智囊团   

89

主题

2

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
25
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-3-22 22:57:03 |只看该作者
不错的系列教程
回复

使用道具 举报

0

主题

1

听众

48

积分

设计初学者

Rank: 1

纳金币
14
精华
0

活跃会员 灌水之王

板凳
发表于 2014-11-22 23:03:33 |只看该作者
不错的系列教程
回复

使用道具 举报

2

主题

1

听众

379

积分

设计实习生

Rank: 2

纳金币
95
精华
0

最佳新人

地板
发表于 2014-11-26 15:20:14 |只看该作者
hfyangyi 发表于 2014-11-22 23:03
不错的系列教程

不错,谢谢分享、、。如果能显示每个场景对应的相机名称就好
回复

使用道具 举报

0

主题

2

听众

1346

积分

助理设计师

Rank: 4

纳金币
505
精华
0
5#
发表于 2014-11-26 17:40:02 |只看该作者
谢谢指导!   长知识了 !
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-6 22:03 , Processed in 0.097507 second(s), 35 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部