Unity3D 5.x中怎么制作ps帷幕制作效果

相关文章推荐
Unity3D场景搭建4:
灯光(Lights)
对于每一个场景灯光是非常重要的部分。网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。你很可能需要在每个场景中设置多个灯光。让...
网上看到一篇关于灯光的文章,描述的很详细,如下:
Lights will bring personality and flavor to your game. You use lights to i...
https://mp./s/DNQFsWpZm-ybIlF3DTAk2A
5.6中的混合光照(上)》中,我们介绍了混合模式,以及Subtract...
https://mp./s/AbWM21sihHw5pFdMzENDPg
在Unity 5中,光照得到了很大的改进。现在,创建高度逼真的游戏已成为可能。但是,出于对性能的...
/game/39.html
本文整理自Unity全球官方网站,原文:UNITY
5 - LIGHTING...
Unity 5 中的全局光照技术详解(建议收藏)
本文整理自Unity全球官方网站,原文:UNITY
5 - LIGHTING AND RENDERING
(文章较长,请耐心阅读)
全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法,要精确的仿真全局光照非常有挑战性,付出的代价也高,正因为如此,现代游戏会先一定程度的预先处理这些计算,而非游戏执行时实时运算。
本文整理自Unity全球官方网站,原文:UNITY
5 - LIGHTING AND RENDERING
(文章较长,请耐心阅读)
全局光照,简称GI,是一个用来模拟光的互动和反弹等复...
本文整理自Unity全球官方网站,原文:UNITY
5 - LIGHTING AND RENDERING
(文章较长,请耐心阅读)
全局光照,简称GI,是一个用来模拟光的互动和反弹...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
查看: 1817|回复: 8
如何在Unity2D游戏中制作视差效果
7排名<font color="#FF昨日变化主题帖子积分
在线时间687 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
本帖最后由 caedmom 于
12:26 编辑
01.gif (1.74 MB, 下载次数: 1)
18:17 上传
结合透视和正交相机在Unity游戏中制作视差效果
Introduction 简介
在开发MimpiDreams时,我们知道我们想用背景和前景做丰富的视差层。在Steam版本中,有几个图层来管理。所以我们想出了一个可能并不是独一无二的方法,不过在这里还是想概括一下。
在unity中有好多使用一个正交相机并用脚本移动图层来设置视差层级的教程。还有一些建议用透视相机和对象的Z轴深度。如果这么做了,设置合适的精灵排序就会变的困难,并且还不能使用优化技术和其他想在MimpiDreams中使用的透视相机的特性。经典的 Mimpi 只用了透视相机来创建,对此我们还有一些。为了节省填充率我们使用了不透明的对象,不过不得不用Z轴偏移来放置它们以免Z方向有冲突。然而,由于对它们应用了透视视角,它们就以不同的速度移动了。
最好的方法是获得两者的优势。设置透视相机来渲染视差层,用正交相机来渲染有角色,平台,拼图等的主平面。当为视差使用透视相机时,就很容易设置它们了。在正交视差中,需要基于相机的距离来缩放每一个对象并放在适当的位置。Toby: The SecretMine的作者Luká? Navrátil告诉我他差不多会花掉一半的工作时间来设置正交视差层。随着我们技术的结合,他可以做的更快。我和我的同事Jaroslav Stehlík一起开发了这种技术。现在让我们看一下如何设置。
Camera and Scene Setup 相机和场景设置
层级视图很简单。将视差相机放在主相机的下边,这样它们会一起移动。
02.PNG (5.11 KB, 下载次数: 1)
18:17 上传
Main Camera主相机Clear Flags: Don’tclearCulling Mask:everything except parallax layerProjection:OrthographicDepth: -1Parallax Camera Near近距离视差相机Clear Flags: DepthonlyCulling Mask:ParallaxProjection:PerspectiveClipping PlanesNear: 0.01Far: 10Depth: 0Parallax Camera Far远距离视差相机Clear Flags: SolidColor (or whatever else you want to use as a background)Culling Mask:ParallaxProjection:PerspectiveClipping PlanesNear: 10Far: 500Depth: -2
03.png (100.35 KB, 下载次数: 2)
18:17 上传
主相机会渲染除正交模式中视差层级之外的所有东西。这需要熟练使用“CullingMask”。“Clipping Planes”解决基于Z轴方向哪个视差对象被哪个视差相机渲染的问题,因此前景在正交平面之前,背景则在它的后边。相机放在Z轴-10的位置,所以在Z & 0的视差中的所有东西都会被近处的相机渲染,在Z & 0位置的对象就会被远处的相机渲染。“Depth”决定相机被渲染的正确顺序。现在在编辑器中需要把所有的视差对象放入视差层中,并将其他所有对象移出该层。
Camera Sizes and Zoom 相机尺寸和变焦
04.png (59.18 KB, 下载次数: 2)
18:17 上传
你需要考虑正交相机的尺寸和视角设置的透视区域。尤其想在游戏中使用变焦的时候,需要基于主相机的正交尺寸来设置视差的相机视角区域。关键是通常有一个特殊的平面(这个案例中为Z = 0),即视差层会和正交透视有同样的移动速度。这点很重要,因为稍后可以移动和缩放相机并且它会表现的很自然。在Mimpi Dreams开发初期,我们没有意识到那些并在视差设置中出现一些错误。我们不可以稍后更改它,因为它会复位所有的视差层。最后,由于我们没有过多的使用缩放,所以并没有产生多大影响。在下一个工程中,我们肯定会用这个设置。这里有一段可以设置缩放的代码。
[C#] 纯文本查看 复制代码public float GetFieldOfView(float orthoSize, float distanceFromOrigin)
// orthoSize
float a = orthoS
// distanceFromOrigin
float b = Mathf.Abs(distanceFromOrigin);
float fieldOfView = Mathf.Atan(a / b)
* Mathf.Rad2Deg * 2f;
return fieldOfV
如果想在Z轴移动相机,则需要更新视差相机的裁剪平面。
[C#] 纯文本查看 复制代码// distanceFromOrigin
float b = Mathf.Abs(mainCamera.transform.position.z);
//change clipping planes based on main camera z-position
farCamera.nearClipPlane =
farCamera.farClipPlane = mainCamera.farClipP
nearCamera.farClipPlane =
nearCamera.nearClipPlane = mainCamera.nearClipP
如何变焦相机有两个选择。可以在Z轴移动主相机(并重新计算裁剪平面),或者可以改变主相机的正交尺寸(并重新计算视差相机的视角区域)。两个选择给出不同的效果,改变正交尺寸是更自然的选择。或者,可以结合这两种技术,看下边的视频。
Unity Exampleunity 实例
Jaroslav准备并给出了你们可以尝试并学习的unity工程。感谢unity提供精选案例的免费资源!可以从Github下载案例工程。工程是用Unity 5.3.3f1制作的。还要看一下展示案例的视频。
Editor Workflow 编辑工作流程
在视差层设置对象最好的方法是在编辑模式下去播放游戏。可以移动角色(和相机)让玩家看到它并调整对象至实际视口。唯一的问题是播放模式下在unity中做出的更改不会保存。然而可以在播放模式下拷贝编辑过的对象并粘贴到编辑器中然后保存。我们创建一个有子集的“content”。这个content是在播放模式下编辑和复制过的。退出播放模式后,这个原始的content会被删除,新的content从剪切板粘贴过来,然后预制件就可以使用了。
05.PNG (1.57 KB, 下载次数: 2)
18:17 上传
还有,不要忘记将新的对象放到视差层中。还可以编写或者使用一些编辑器工具来帮助你保存和自动完成对象层级设置。上边的案例实在编辑模式下执行的,所以可以在编辑器中用它来设置。不过我们在MimpiDreams中使用了这个工作流程,因为这对于美术设计在场景中移动很容易,并且他可以自己调整层级。
Summary 总结
06.gif (1.25 MB, 下载次数: 3)
18:17 上传
Some advantages of this solution 这种解决方案的优势:
本地基本设置(脚本仅仅为了变焦)案例中更好的表现静态批处理,因为层级不会移动简单的编辑工作流程
Disadvantages 劣势:
会产生更多的draw calls我们介绍了和Mimpi Dreams中制作视差效果不同的制作方法。你可能需要自定义一些东西。例如,我们显示所有摄像机的渲染纹理,不过在这边文章中,我想介绍最简单的设置。
原文作者: MichalBerlinger原文链接:
扫描下方二维码关注官方微信~每日都有精选干货与你分享呦~
蛮牛微信.jpg (34.28 KB, 下载次数: 1)
16:17 上传
本文由蛮牛译馆倾情奉献,翻译:xiaojiejie,审校:caedmom,如有请及时联系,除 合作社区 及 合作媒体 外,禁止转载。
unity 5.2.3f1;c拼图unity背景;unity 5.3.3f1;unity 4.6.3f1;uunity 拼图;unity2d 背景移动
每日推荐:
72217/5000排名<font color="#FF昨日变化主题帖子积分
日久生情, 积分 2217, 距离下一级还需 2783 积分
日久生情, 积分 2217, 距离下一级还需 2783 积分
蛮牛币4294
在线时间707 小时
每日推荐:
4490/500排名<font color="#FF昨日变化4主题帖子积分
四处流浪, 积分 490, 距离下一级还需 10 积分
四处流浪, 积分 490, 距离下一级还需 10 积分
在线时间186 小时
非常喜欢这个效果!!!太谢谢了 找了好久
每日推荐:
61485/1500排名<font color="#FF昨日变化10主题帖子积分
蛮牛粉丝, 积分 1485, 距离下一级还需 15 积分
蛮牛粉丝, 积分 1485, 距离下一级还需 15 积分
蛮牛币2935
在线时间390 小时
这个真的好酷好酷!!!
每日推荐:
5845/1000排名<font color="#FF昨日变化5主题帖子积分
熟悉之中, 积分 845, 距离下一级还需 155 积分
熟悉之中, 积分 845, 距离下一级还需 155 积分
在线时间277 小时
我喜欢这个效果
每日推荐:
73365/5000排名69昨日变化1主题帖子积分
日久生情, 积分 3365, 距离下一级还需 1635 积分
日久生情, 积分 3365, 距离下一级还需 1635 积分
蛮牛币11811
在线时间771 小时
很不错,感谢你们的分享!!!
每日推荐:
5625/1000排名<font color="#FF昨日变化5主题帖子积分
熟悉之中, 积分 625, 距离下一级还需 375 积分
熟悉之中, 积分 625, 距离下一级还需 375 积分
在线时间197 小时
Thank you for your sharing and&&i love you brother!
每日推荐:
147/50排名<font color="#FF昨日变化25主题帖子积分
注册看看, 积分 47, 距离下一级还需 3 积分
注册看看, 积分 47, 距离下一级还需 3 积分
在线时间30 小时
非常喜欢这个效果!!!太谢谢了 找了好久
每日推荐:
4479/500排名<font color="#FF昨日变化11主题帖子积分
四处流浪, 积分 479, 距离下一级还需 21 积分
四处流浪, 积分 479, 距离下一级还需 21 积分
蛮牛币2044
在线时间107 小时
谢谢分享,很不错
每日推荐:
经过游戏蛮牛认证的蛮牛小翻译
游戏蛮牛给予质量较高、影响力较大的unity相关技术开发者的荣誉称号
购买游戏蛮牛书籍如何在Unity3D5.x中添加复杂的水效果_百度知道
如何在Unity3D5.x中添加复杂的水效果
我有更好的答案
在word,有插入->对象->公式,编辑就可以了。mathtype编辑数学公式也很不错
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。1,下载、安装:&&
  建议直接借助& 进行安装,根据需要勾选需要的资源包,下载完成后有以下资源:
2,学习视频:51自学网 & Unity3D游戏制作入门教程
  &学习建议:&参考教程中的思路、实现方法,但不一定完全要按照教程中的每一步去做,觉得不好的地方,自己可以变通一下
3,发射炮弹实例注意事项:
  (1) 教学中编辑器是4.X版本的,官网下载的最新版本是5.X版本,部分Javascript的代码语法不同
    如:5.X 版本中 获取组件的代码是:&&n.GetComponent(Rigidbody).AddForce(fwd*3800);
      5.X 版本中 可用 UI - Text 代替 之前版本的 GUIText :&&
      gameObject.Find("Canvas/Text").GetComponent(Text).text ="射击次数:"+shootN &
  (2) 地面建议用 3D Object & &Plane 对象,然后加大 x,z ,y 设置为1&
  (3) 显示发射次数和显示次数的文本&
  (4) 发射的子弹暂时不Destroy
4,以下是1-21课完整的Javascript代码:
   附加在Main Camera上的JS:&
import UnityEngine.UI;
#pragma strict
var speed:int=5;
var Newobject:T
//发射次数
var shootNums:int=1000;
//保存消灭数量
killNums:int=0;
function Start () {
gameObject.Find("Canvas/Text").GetComponent(Text).text ="射击次数:"+shootNums + "
消灭数量:"+killN
//加载音乐
gameObject.Find("Plane").GetComponent(AudioSource).Play();
gameObject.Find("bullt").GetComponent(AudioSource).Pause();
function Update () {
//镜头(视角)前后左右移动 : W S A D
var x:float=Input.GetAxis("Horizontal")*Time.deltaTime*
var z:float=Input.GetAxis("Vertical")*Time.deltaTime*
transform.Translate(x,0,z);
//点击 Ctrl 或 点击鼠标左键 发射
if (Input.GetButtonDown("Fire1")) {
//创建发射球体
var n:Transform =
Instantiate(Newobject,transform.position,transform.rotation);
//定义发射方向
var fwd:Vector3=transform.TransformDirection(Vector3.forward);
//发射力度
n.GetComponent(Rigidbody).AddForce(fwd*3800);
gameObject.Find("bullt").GetComponent(AudioSource).Play();
//记录发射次数
shootNums+=1;
//更新发射次数
gameObject.Find("Canvas/Text").GetComponent(Text).text ="射击次数:"+shootNums+ "
消灭数量:"+killN
//旋转功能
//视角向右转 E
if(Input.GetKey(KeyCode.Q)){
transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);
//视角向左转 Q
if(Input.GetKey(KeyCode.E)){
transform.Rotate(0,25*Time.deltaTime,0,Space.Self);
if(Input.GetKey(KeyCode.Z)){
transform.Rotate(-25*Time.deltaTime,0,0,Space.Self);
if(Input.GetKey(KeyCode.C)){
transform.Rotate(25*Time.deltaTime,0,0,Space.Self);
//镜头水平向上、水平向下移动
if(Input.GetKey(KeyCode.H)){
transform.Translate(0,5*Time.deltaTime,0);
if(Input.GetKey(KeyCode.N)){
transform.Translate(0,-5*Time.deltaTime,0);
   &附加在消灭立方体物体上的JS: &&
#pragma strict
function Start () {
//消灭数量
var countkillNums:int=0;
function Update () {
if (gameObject.transform.position.y&0) {
countkillNums=++gameObject.Find("Main Camera").GetComponent(ShootBullt).killN
if (countkillNums&=21) {
gameObject.Find("Canvas/Text").GetComponent(Text).text =
"恭喜:闯关成功!" ;
gameObject.Find("Main Camera").GetComponent(ShootBullt).enabled=false;
Destroy(gameObject);
实现效果:
5.x KEY : & &
阅读(...) 评论()分类目录,点+号展开
本教程是Unity 3d下强大的shader节点化编程工具shader Forge的基础进阶教程,适合之前有一定基础的用户学习,并能在以往基础上得到快速提升。本套教学仍然保持以往精简的风格,为的是降低大家学习所花费的时间成本,并且教学质量没有丝毫的下降。本教程是Unity 3d下强大的shader节点化变成工具shader Forge的基础教程,能够较为深入的帮助大家理解shader Forge的各个节点的原理和使用方法。Unity3D是近年移动开发的新兴引擎。NGUI更是其UI系统的最强插件。市面上绝大部分的成功项目都是使用NGUI插件开发的UI系统。UI系统在成功项目中的比重非常多。一款好的产品UI直接与成功挂钩。没有什么功能和界面,是不需要UI系统的。本教程以一个小镇场景作为案例,重点演示了场景中的建筑贴图和纹理在Substance designer中的制作生成,教程为Substance designer直接用于Unity3D项目提供了经验参考。为场景制作美术人员提供了新的开发思路。
毫无节操的小广告
又一个毫无节操的小广告
来投个票撒
你平时都使用什么主要软件工作?(双选)
&Loading ...标签帮助提示
如何收藏我喜欢的文章? 加入收藏与关注即可。
什么是CG瀑布流? 可以快速方便的浏览内容。
如何使用即时搜索? 快速的找到我需要的内容。

我要回帖

更多关于 帷幕 的文章

 

随机推荐