SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景

        这里也安利一下我入门时的渠道之一:SIKI网络培训班 http://www.sikiedu.com/

        价格公道,而且内容也很多,涉及面广,值得推荐。

        本文就是在这个系列中的其中一个拿出来分享。不过代码和部分实现都被我改了重写,感兴趣的人推荐去看全系列的课程。会讲得详细些。这里分享我就只提部分技术点,基础的东西就不重复。传送门

SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景_第1张图片

 

       本文侧重点不同,我着重的是2D图片弄成3D背景的实现(即摄像头的重叠),以及枪的移动实现。而序列化部分我就另外系列分享,因为序列化部分在开源库中有很多,知识点也是很多,故另外分开分享。

        本文会分两部分来写。本部分记录摄像头的重叠。

       在3D场景中,实现背景图片有两种思路:

       ①简单实现是:用一个Cube或者Plane,放到其他全部物体的后面(远离摄像头),然后平展到比镜头视角大一点点,再在对着镜头的一面贴上背景图来实现3D场景的背景图效果。

       ②镜头的叠加实现:unity中可以实现多个镜头的视觉合并,即每个镜头只关注自己要的东西(只能看到部分东西),最终的效果却可以叠加全部镜头看到的效果(但是存在前后,前面的东西会挡住后面的东西)。

 镜头叠加

        unity中,我们知道2D部分会前置在镜头前面,挡住它后面的东西,如果我们直接用图片放在image上,肯定就直接把后面的3D物体全部挡住了。像下面这样,弹窗直接把界面全挡住了。

SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景_第2张图片

       当如果有镜头叠加技术,就可以一个镜头渲染2D,然后在这个镜头再靠近我们的地方弄第二个镜头来渲染3D的东西,这样2D部分就能放到3D部分的后面了,也就实现图片渲染为3D场景的背景图了。像下图,背景图的镜头只渲染image,其他部分由主摄像头渲染。

SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景_第3张图片

        当然,这里说镜头的前后,其实是Depth这个东西就能实现了,不用物理上的Position上的前后,Depth这东西,在做2D的UI时就有体会,2D的东西在Z轴上是一样的,但是他们怎么还会发生重叠遮盖效果?其实就是这个“深度”概念,在UI中,深度体现在Hierachy中的上下顺序,越在下面的东西,就会遮住上面的东西,这里可以理解为上面的东西是之前已经加在里面的,后面加的东西放在下面,照理,后面来的东西会盖住前面原有东西(把depth理解成Z轴的值,但是把值X0.000001这样,空间上确实几乎在z=0的平面,但是三维中却是有前后顺序)。

        下面记录怎么实现:

 1)添加新Layer:BackgroundImage

SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景_第4张图片

2)添加Image(其他可以放图片的也行)

      然后把背景图片拉上去赋值,注意修改类型为平铺 Tiled 。如果3D场景中的光照有颜色,这里把对应的Color也同步改上去。然后就是最重要分层,Layer部分改为刚刚新建的BackgroundImage层。(它上层的Canvas也同步修改到该层)

SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景_第5张图片

3)新建摄像头BackgroundCamera

      这个摄像头Layer也分到BackgroundImage层,然后选Culling Mask为该层。意为只渲染该层。除Depth的值要比main的小,设为-2,其他参数保持和main摄像头一样。但是这个摄像头不用Audio Listener(肯定不需要)和Flare Layer(看情况,一般不需要)。当然是可以把除Transform和camera外的组件都去除的。

SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景_第6张图片

4)修改主摄像头需要改动的地方

     Culling Mask剔除掉BackgroundImage层;Depth改为大于上面摄像头的值,这里为-1;

     注意这时候还是不行的,没看到镜头叠加的效果,但是明明我们Depth修改了呀?其实是因为main摄像头渲染模式我们还没改:修改Clear Flags为Depth only,这时候Depth才起作用。

SIKI教程分享---HitGHOST(3D版打地鼠)---一.图片作为3D场景的背景_第7张图片

 

该工程剩下部分等下文再继续记录。感谢关注。

你可能感兴趣的:(Unity开发)