【 – 小学作文】
篇一:《Unity3D教程宝典之Shader篇:第十讲 雾化》
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院
Shader第十讲 雾化Fog
Fog
,即雾化。本质是离屏幕越远的物体,就越趋向于某种颜色。通常是远处,即离屏幕远
的地方,趋向于白色或者浅灰色。
全局雾化:在Edit->RenderSettings里设置,具体如下
Fog:激活或不激活
Fog Color:雾的颜色,仅RGB起作用。
Fog Mode: Linear线性,Exp指数,Exp2 指数2
Fog Density:雾化的强度
Linear Fog Start:开始距离
Linear Fog End:结束距离
部分雾化:三种Shader都可使用,在需要雾化的物体Shader脚本里,加上如下代码 Fog{Mode Linear Color (0.87,0.87,0.87,1) Density 0.1 Range 0,300}
参数的设置和全局雾大同小异,具体参数详见下方链接。
雾化参数的设置参考
篇二:《Unity C# 脚本 实现镜头随人物移动》
Unity C#脚本 实现摄像头随人物移动 我现在暂时能想到3中方法。
1.就是把摄像机放在人物中,当成人物的子物体,这样就把人物当着父物体,也即是相当于设置相机的参照物吧,这样不管人物移动到那里,它和摄像机保持的距离还是一致的。不会因为人物移动,摄像机就离人物远了。
2.就是导入我们伟大的unity中自带的哪个跟随物体的脚本, 名字是 SmoothFollow。然后设置一下距离啊 高度啊,直到自己满意。
3,就是自己用自己写的脚本控制。 我直接上脚本吧
using UnityEngine;
using System.Collections;
public class FllowTarget : MonoBehaviour {
public Transform character; //摄像机要跟随的人物
public float smoothTime = 0.01f; //摄像机平滑移动的时间 private Vector3 cameraVelocity = Vector3.zero;
private Camera mainCamera; //主摄像机(有时候会在工程中有多个摄像机,但是只能有一个主摄像机吧)
void Awake ()
{
mainCamera = Camera.main;
}
void Update()
{
transform.position = Vector3.SmoothDamp(transform.position, character.position + new Vector3(0, 0, -5), ref cameraVelocity, smoothTime); }
}
我们讲这段代码拖动给摄像机,然后记得添加character 。好了 现在你就能看见效果了。我觉得这3个方法中就属这个方法好点(个人看法,当然还有牛人写更好的代码) 现在我来解释下代码。
character.position + new Vector3(0, 0, -5)这个就是相当于摄像机的位置,也就是摄像机隔离人物往后5个单位长度。总不可能和人物坐标是一样吧。
主要就是Vector3.SmoothDamp() 这个函数。里面的第一个参数就是当前的位置。 第二个参数就是要接近的位置。 第三个参数就是 当前速度,这个值由你每次调用这个函数时被修改。 第四个参数就是完成这个位移移动所花费的时间。
篇三:《Unity3D摄像机详解》
Unity3D摄像机详解
作者:李志健
正如电影中的镜头用来将故事呈现给观众一样,Unity的相机用来将游戏世界呈现给玩家。你始终至少有一个相机在场景中,你也可以有多个。多相机可以给你一个双人分屏效果或创建高级的自定义效果。你可以让相机动起来,或用物理(组件)控制它们。几乎你能想到的任何事,都可以用相机变成可能,而且为了适合你的游戏风格,你可以用典型的或特殊的相机类型。
摄像机
相机是为玩家捕捉和显示世界的一种装置。通过定制和操作相机,可以让你的游戏外观与众不同。在一个场景中你可以有数量不限的相机。它们可以被设置为以任何顺序来渲染,在屏幕上的任何地方来渲染,或仅仅渲染屏幕的一部分。
属性
Clear Flags 清除标记
决定屏幕的哪部分将被清除。当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的
Background 背景
在镜头中的所有元素描绘完成且没有天空盒的情况下,将选中的颜色应用到剩余的屏幕
Culling Mask 剔除遮罩
包含或忽略相机渲染对象层。在检视视图中为你的对象指派层
{unity怎么镜头雾关掉}.
Projection 投射 切换摄像机的模拟透视功能 –> Perspective 透视 相机将用完全透视的方式来渲染对象。 –> Orthographic 正交 相机将用没有透视感的方式均匀地渲染对象 Size 大小 当设置了正交时摄像机的视口大小。 Field of view 视野范围 相机的视角宽度,以及纵向的角度尺寸。 Clipping Planes 剪裁平面 从相机到开始渲染和停止渲染之间的距离。 –> Near 近点 开始描绘的相对于相机最近的点。 –> Far 远点 开始描绘的相对于相机最远的点。 归一化视口矩形
用四个数值来表示这个相机的视图将绘制在屏幕的什么地方,使用屏幕坐标系(值0-1)。
–> X
相机视图将进行绘制的水平位置的起点
–> Y
相机视图将进行绘制的垂直位置的起点
–> W (Width) 宽度
相机输出到屏幕上的宽度
–> H (Height) 高度
相机输出到屏幕上的高度
Depth 深度
绘图顺序中的相机位置,具有较大值的相机将被绘制在具有较小值的相机的上面 Rendering Path 渲染路径
该选项定义相机将要使用的渲染方法
–> Use Player Settings
使用播放器设置
该相机将使用任意一个播放器设置中所设置的渲染路径
–> Vertex Lit 顶点光照 本相机对所有对象的渲染会作为顶点光照对象来渲染 –> Forward 快速渲染 所有对象将按每种材质一个通道的方式来渲染,如同在Unity2.x中的标准 –> Deferred Lighting 延迟照明 所有对象将无照明绘制一次,然后所有对象的照明将一起在渲染队列的末尾被渲染。 Target Texture 目标纹理
(Unity Pro/Advanced only)
请参考Render Texture,该页包含了相机视图的输出。这个引用属性将禁用相机渲染到屏幕的功能。
细节
相机对于将你的游戏显示给玩家是必不可少的。它们可以被定制、被脚本化、或被子类化以实现几乎任何可以想象的效果。对于一个益智游戏,你要保持相机处于静态显示全部视角。对于第一人称射击游戏,你应该将相机作为玩家角色的子对象,并将其放置在与角色的眼睛等高水平上。对于一个赛车游戏,你可能更希望让相机跟随玩家的车辆。
你可以创建多个相机并且给每一个分配不同的深度。相机是按深度从低到高来绘制的,换言之,一个深度为2的相机将绘制在一个深度为1的相机之上。你可以调整标准视口矩形(参照前面的属性列表)的属性值来改变其大小和其在屏幕上的位置。这样你就可以创建多个小视窗,如导弹控制器,小地图窗口,后视镜等等。
Render Path 渲染路径
Unity支持不同的渲染路径。你应该选择哪一个取决于你的游戏内容和目标平台/硬件。不同的渲染路径有不同的功能和性能特点,主要影响光源与阴影。你的项目使用的渲染路径是在播放设置中选择的,此外,你可以为每个相机覆盖它(就是重新选择一种渲染方式)。
更多渲染路径的信息,请查看rendering paths page。
Clear Flags 清除标记
每个相机在渲染时会存储颜色和深度信息。屏幕的未绘制部分是空的,默认情况下会显示天空盒。当你使用多个相机时,每一个都将自己的颜色和深度信息存储在缓冲区中,还将积累大量的每个相机的渲染数据。当场景中的任何特定相机进行渲染时,你可以设定清除标记以清除缓冲区信息的不同集合。可以通过下面四个选项之一来完成:
Skybox 天空盒
这是默认设置。在屏幕上空的部分将显示当前相机的天空盒。如果当前相机没有设置天空盒,它会默认使用渲染设置(在Edit->Render Settings里)中选择的天空盒。然后它将退回使用背景颜色。
Solid Color 纯色
屏幕上的任何空的部分将显示当前相机的背景颜色。{unity怎么镜头雾关掉}.
Depth Only 仅深度
如果你想绘制一个玩家的枪(想象一下cs里的枪只在屏幕中显示一半)而不让它在环境里被剔除,你要设置一个深度为0的相机来绘制环境,还要另一个深度为1的相机单独绘制武器。该武器相机的清除标记应设置为仅深度。这将保持环境的图形显示在屏幕上,但会丢弃所有关于每个对象在三维空间中的位置的信息。当枪被绘制出来,不透明的部分将完全覆盖任何已绘制的事物,而不管枪到墙之间如何接近。
在清除掉它前面的相机的深度缓存之后,枪最后被绘制
Don't Clear 不清除
该模式不清除任何颜色或深度缓存。其结果是,每帧绘制在下一帧之上,造成涂片效果。这不是用于游戏的典型方式,最好是与自定义着色器一起使用。
Clip Planes 剪裁平面
Near和Far,剪裁平面的这两个属性决定了相机的视野开始和结束的地方。这两个平面垂直于相机的方向,并且由相机的位置来确定。近平面是开始渲染的最近位置,远平面则是最远位置。
剪裁平面也决定深度缓存精度如何在场景上分布。一般来说,要得到更好的精度你应该移动Near平面尽可能的远。
注意,Near和Far剪裁平面连同相机视野的轮廓平面一起构成的区域俗称相机锥(这种形状应该叫作棱台吧)。Unity确保在渲染你的对象时,那些完全在这个锥形区域外的对象则不显示。这就是所谓的可视性剪裁。不论你的游戏是否使用遮挡剔除,可视性剪裁都将发生。
出于性能原因,你可能需要尽早剔除小物体。例如,小石块和碎片相对于大型建筑会在更短距离内不可见。要做到这一点,将小物体放入一个隔离层(separate layer)并使用Camera.layerCullDistances脚本函数设置每一层的剔除距离。
Culling Mask 剔除遮罩
剔除遮罩使用层有选择地渲染一组对象。有关使用层的信息可以在这里找到。
通常好的做法,是把用户界面放到不同的层,然后用一个独立相机单独渲染UI层。
为了使UI显示在其他相机视角的顶部,你还需要设置清除标记为Depth only,并确保UI相机的深度比其他相机高。
Normalized Viewport Rectangle 标准视口矩形
标准视口矩形是专门用来定义当前相机的视点将显示在屏幕的哪一部分。你可以把地图视角(意思就是小地图)放在屏幕右下角,或把导弹尖视角(可以理解为发射瞄准镜)放到左上角。只需一点设计工作,你就可以用视口矩形创造出一些独特的行为。
使用标准视口矩形可以很容易地创建一个双人分屏效果。在你创建了两个相机之后,改变玩家1的Ymin值为0.5,玩家2的YMax值为0.5。这将使玩家1的相机显示在屏幕的上半部分,玩家2的相机显示在屏幕下半部分。(Ymin、Ymax应该是旧版本的参数吧,3.1版的参数见前面列表)
篇四:《Unity3D游戏开发之战争迷雾效果》
相信玩过Dota,英雄联盟等即时竞技类游戏的朋友都知道战争迷雾,这次做了一个战争迷雾的效果:{unity怎么镜头雾关掉}.
战争迷雾大家应该很熟悉了,一开始地图全部都是黑的,只有主角的一定范围内能看得到。随着主角的移动,未探索的区域变成了可见。
我这个demo还做了视角切换的功能,可以看看切换摄像机视角之后的迷雾是什么效果的。
在场景里面有很多隐藏的物体(这里是一些Cube),走近了,可以渐渐的出现。
主角可视的范围是可以调节的,这里是把可视范围调节的比较小,可以清楚的看出行走过的道路。文章出处【狗刨学习网】
既然有人问,就说说原理吧。这个战争迷雾我理解是分为了这几个部分:{unity怎么镜头雾关掉}.
1、初始化场景,按照场景的总大小生成一张对应的遮罩图片,用于记录场景哪些部位已经走过,哪些没走。
2、当人物移动的时候,判断人物的半径范围,用渐变的方式去修改遮罩图片的像素点。
3、使用遮罩图片去叠加屏幕的显示。
对于第二点,为了减少绘制遮罩图片的频率,我们首先可以只在人物移动的时候做绘制判断,然后也可以把地图分成区域,当某个区域已经全部变成可视之后,就不再做判断。最后,还可以控制绘制时的时间间隑,比如每隑10帧才绘制一次之类,自己去感受了。{unity怎么镜头雾关掉}.
对于第三点,可以使用的方法就比较多了:
1、可以使用渲染前的合成叠加
2、可以使用多个摄像机叠加
3、可以使用shader判断世界坐标绘制。
出于性能的考虑,我是用了多个摄像机叠加的方式。
篇五:《3Dunity基本操作》
一、【实验名称】
Unity3D的基本操作
二、【实验目的】
通过简单游戏场景的设计与制作,进一步熟悉Unity3D的基本操作,掌握Unity3d中地形、树木、草、天空盒、雾、影子等的绘制与添加的方法,掌握贴图材质的编辑设置。
三、【实验原理】
Unity3D操作方法,地形、树、草的绘制,天空盒、雾及影子效果的添加方法,材质贴图的编辑,地形中贴图的编辑设置。
四、【具体操作内容及要求】
1.在Unity3D平台中,利用提供的素材完成游戏开始界面的设计制作。
2. 在主场景中设计并绘制游戏地形,要求包含灯光、地面、多种树木、草丛、石头、湖面等对象,注意材质贴图的编辑和设置。
2. 在主场景中应用天空盒效果。
3. 在主场景中实现雾及影子效果。
五、具体实验步骤
1.在GameObject->CreateOther->Terrain里创建地形,在右面的设置面板点击
修改地形的面积(如图1);
图1
2.在GameObject->CreateOther->Directional light里创建平行光(如图2);
图2
3. 该图标用于建立无极限高的山峰,该图标比第一个图标多了一个参
使用该图标可平滑山峰,通过数值Height
,设置该参数可限定山的高度,
改变BrushSize和Opacity的参数建立不同的山峰(如图3);