Unity中实现360°预览模型

来源:互联网 发布:淘宝怎么去掉虚拟商品 编辑:程序博客网 时间:2024/06/02 03:38

近期一直忙于项目,总想抽空写一点项目总结,分享一些项目经验,希望能帮到有这方面项目需求的人,少走一点弯路。

       好的,废话不多说,今天分享的主题是:Unity中相机系统,实现游戏The Free Room(未上锁房间)中那种纵享丝滑的感觉。嗯,先上个小视频感受一下。


        是不是感觉特别棒,当然,效果虽然很好,但其中用到的数学知识也很简单,线性插值,一次贝塞尔曲线等等,如果你对线性插值不是特别了解,请移步至http://blog.csdn.net/u014659211/article/details/51507282,这篇博文详细介绍了线性插值相关的数学知识。http://blog.csdn.net/cdnight/article/details/48468653,这篇文章详细介绍了贝塞尔曲线的相关数学知识,扫完一遍,对这些游戏中常用的数学知识就会有大致的了解了。

        下面,上代码,相信代码才是最直观的理解。

  1. 首先导入Unity官方自带的相机包,找到Standard Assets/Cameras/Prefabs/FreeLookCameraRig.prefabs这个文件,拖动到场景中,DisEnable  Protect Camera From Wall Clip这个脚本,,修改FreeLookCam.cs这个脚本,向其中添加一个OnEnable()函数:如下图所示:


  2. (这个函数的主要功能是,当我们需要通过脚本动态控制主摄像机移动的时候,我们一般不希望玩家操作相机,这个时候就可以Disable这个脚本,然后通过代码控制相机移动到指定的位置之后,再次OnEnable这个脚本,玩家可以继续操作相机旋转,如果不添加这个函数,当我们对主摄像机进行移动的时候,会出现无法控制相机的旋转方向的情况,再次启用脚本时,相机会出现很明显的闪动)。

  3. 关于具体的实现原理,请看下图:


    其核心的部分还是这里:


    关于官方相机包的使用,我在这里就不做过多的分析了,大家可以去查看一下源代码,根据自己的项目需求来修改源码。这里主要的还是分享一下关于这个prefabs的相关设置,和一些具体的参数调整。没图说什么:



    这是官方的使用指南,大概翻译一下就是:Camera Rig这个对象控制的是你需要查看的对象,比如模型,场景,你只需要将这个对象的Transform设置与模型的position一致就可以了,Pivot:通过调整position.y来控制当前视窗的高度,调整position.x来控制视窗的水平偏移,camera:通过调整camera的position.z的值来控制,相机距离模型的远近程度。具体的坐标,可以根据实际的项目需求来确定。上一张项目层级图:


  4. 下图是具体参数设置:


  5. 最后为了实现跨平台(PC 、Android 、IOS)的需求,需要指定一个操作面板,使用UGUI创建一个Image,并给Image添加一个TouchPad.cs的组件,该代码需要导入自带的CrossPlatformInput的官方资源包。同样,我们需要对TouchPad.cs这个script文件进行源代码修改,以适应项目的需求而,笔者当时目标终端是不支持多点触控的一体机,所以需要修改源代码才能正常运行,怎么修改呢,听我慢慢道来:首先,将代码文件中的宏定义,即,看图吧:

    ,将所有的#if !UNITY_EDITOR中的内容注释,即可正常运行,我当时项目针对的是触控一体机,有特殊的需求,如果不注释的话,会出现无法运行的状况,如果你的目标终端是其它平台,完全可以跳过这一步。

    最后需要在FreeLookCamera.cs这个文件中实例化一个TouchPad:


  6. 然后在FreeLookCamera脚本中添加如下代码:


  7. 并将上述的Touchpad赋值个这个变量:TouchPad的配置如图:



最后上一张测试图:



项目效果图,版权问题,就不放了,上图凑合感受吧。当然,少不了工程文件,如下:工程文件地址:https://pan.baidu.com/s/1pL0YyJT,提取码:a47h,如果觉得文章还不错,请关注我的个人公众号:

,只要有空每周会分享一些项目的经验的分享,he一些技术知识点的分享。


原创粉丝点击