如何使用ae脚本粒子汇聚消散修改Unity中的粒子 VR开发资源

请完成以下验证码
您当前的位置: &
怎样用Unity创建一个VR项目
查看: 5751|
|来自: 游资网
筑基  为了准备好学习使用Unity开发VR应用,我们首先要检查下自己的电脑硬件和软件配置是否满足要求。简单来说,显卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上,内存8GB以上,要有两个USB3.0接口,一个USB2.0接口,一个HDMI 1.3接口。  操作系统比较坑爹,不支持Mac,也不支持Linux。支持Win7,Win8,Win10。  当然,还要把自己的显卡驱动升级到最新版本。  Oculus官方的检测地址:    一旦完成了这种烧钱的工作,就该安装Unity了。注意在打开Unity前要把DK2连接好并开启。 在继续之前,打开Oculus Configuration Utility应用,并检查Demo Scene可以正常运行。注意在运行Demo Scene之前看可能需要在Oculus Configuration Utility中设置一个新用户。  创建第一个VR项目  接下来我们将使用Unity创建一个简单的VR项目demo,其效果是在VR头盔中观察一个立方体。如果你想研究更多VR示例,不妨下载我们在上一篇教程中提到的VR示例项目(Asset Store:https://www./en/#!/content/51519)。  Step 1  打开Unity,创建一个新的空项目。  说明一下,我当前用的Unity版本是5.3.1f1,可能你看到这篇教程的时候又已经升级换代了。  Step 2  在Unity的菜单中选择Fiel- Build Settings,并选中PC,Mac& Linux Standalone。  Step 3  在场景中创建一个新的立方体,从菜单中选择Game Object – 3D Object -Cube ,通过Translate工具把立方体放到默认的Main Camera 前面,类似下面。  Step 4  保存界面(File- Save Scene,或是使用快捷键)。  Step 5  在菜单中选择Edit- Project Settings – Player,在”Other Settings“部分勾选”Virtual Reality Supported”  Step 6  点击Unity界面上的Play按钮进入Play模式。  如果之前的设置没有问题,现在你应该可以通过DK2看到这个场景,四处看看,Unity中的摄像机将自动根据DK2的位置和旋转变化反应。  出错了怎么办?  如果你没有在DK2中看到期望的场景,那么检查以下的事项:  1、确保你在打开Unity项目前就已经把DK2接好并且开启了;  2、打开Oculus自带的Oculus Configuration Utility,看看Demo Scene是不是可以正常运作;  3、更新你的显卡驱动到最新版本;  4、确保你在电脑上装了最新的Oculus Runtime 0.8,或更高版本;  当然,如果还是有问题,可以到论坛里面参与讨论。(Virtual Reality:)  关于VR开发的一些有用信息:  虽然VR应用开发和标准Unity应用开发很相似,不过还是有些区别需要注意的。  1、编辑器中显示的帧速(Frame rate)  当你通过编辑器查看项目时,注意体验上可能有些延迟,因为电脑需要将同样的内容渲染两次。所以在实际测试项目的时候,最好创建一个可执行版本,在测试设备上实际体验。  2、摄像机的移动  注意,我们不能在Unity中直接移动VR摄像机。如果你希望调整摄像机的位置和旋转,需要确保将它设置为其它游戏物体GameObject的子物体,然后通过所依附的物体进行移动。  关于这一点,可以查看VR Samples项目中的Flyer和Maze场景。  3、相机节点  左眼和右眼的摄像机并不是由Unity创建的。如果你在开发中需要获取这些节点的位置,则必须使用InputTracking类。  如果你想要获取场景中眼睛的不同位置(比如测试时),请使用下面的示例脚本,并将其attach到摄像机上。  C#脚本  using UnityEngine;  using UnityEngine.VR;  public class UpdateEyeAnchors : MonoBehaviour  {  GameObject[] eyes = new GameObject[2];  string[] eyeAnchorNames ={ “LeftEyeAnchor”, “RightEyeAnchor” };void Update()  {  for (int i = 0; i & 2; ++i)  {  // If the eye anchor is no longer a child of us, don’t use it  if (eyes[i] != null && eyes[i]。transform.parent != transform)  {  eyes[i] = null;  }  // If we don’t have an eye anchor, try to find one or create one  if (eyes[i] == null)  {  Transform t = transform.Find(eyeAnchorNames[i]);  if (t)  eyes[i] = t.gameObject;  if (eyes[i] == null)  {  eyes[i] = new GameObject(eyeAnchorNames[i]);  eyes[i]。transform.parent = gameObject.transform;  }  }  // Update the eye transform  eyes[i]。transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);  eyes[i]。transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);  }  }  }复制代码  4、VR中的图像效果(Image Effect)  在VR项目中使用众多图像效果是很奢侈的事情。考虑到你需要两次渲染同一个场景(每只眼睛一次),因此很多当前经常使用的图像效果对VR应用来说会很浪费,会严重影响游戏的运行帧速。  因为VR将用户的眼睛置入一个虚拟的空间,因此部分图像效果对VR来说没有任何意义。举例来说,深度视角、模糊效应和镜头光晕效果对VR来说没有任何意义,因为在现实世界中我们是看不到这些效果的。不过如果以后VR头戴设备可以支持眼动跟踪,那么深度视角可能会有意义。  不过有些效果还是可以考虑使用的:比如抗锯齿是有用的(特别是考虑到某些头戴设备的低分辨率),色彩分级也很有用(关于这一点可以查看这个链接:Color Grading with Unity and the Asset Store:),对有些游戏来说Bloom会有用。不过在使用任何效果之前,最好先在游戏中实际测试下有没有用。  Unity自身提供了很多图像效果(Assets-Import Package-Effects),此外Asset Store里面也提供了很多效果,比如Colorful,Chromatica,Amplify Color,还有更多。  5、Render Scale  根据VR互动应用场景的复杂度和所运行的硬件环境,你可能需要更改render scale设置。通过此项设置可以调整镜头校正前texel:pixel的比率,这样可以牺牲游戏性能来换取画面的清晰度。  这项设置应该通过代码进行,可以参考这里:    通过使用以下代码可以改变render scale的设置:  using UnityEngine;  using System.Collections;  using UnityEngine.VR;  namespace VRStandardAssets.Examples  {  public class ExampleRenderScale : MonoBehaviour  {  [SerializeField] private float m_RenderScale = 1f;  //The render scale。 Higher numbers = better quality, but trades performance  void Start ()  {  VRSettings.renderScale = m_RenderScale;  }  }  }复制代码  关于这项设置,可以参考我们的VR Samples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。  更改render scale的效果示例如下:  Unity的默认render scale是1.0,效果如下:  关于这项设置,可以参考我们的VR Samples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。  更改render scale的效果示例如下:  如果将render scale设置成1.5,可以看到显示效果更锐利:  根据游戏场景的不同,可以考虑降低render scale来提升游戏运行性能,或者通过增加render scale的数值让画面效果更锐利,但会以牺牲游戏运行性能作为代价。  好了,看到这里,你应该知道如何在Unity项目中整合VR,如何设置游戏中摄像机的移动,以及和非VR游戏相比应该如何使用图像效果。
微信扫一扫
专注于VR的学习、开发和人才交流
啊哦~~,这已经是第一篇了。。。
啊哦~~,这已经是最后一篇了。。。
&津ICP备号扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
关注:1251
当前位置: &
查看: 1690|回复: 80
unity开发常用脚本800个+808个
72225/5000排名<font color="#FF昨日变化主题帖子积分
日久生情, 积分 2225, 距离下一级还需 2775 积分
日久生情, 积分 2225, 距离下一级还需 2775 积分
蛮牛币3688
在线时间464 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
我就想笑了,一个破网上搜集的资源卖20个币,没错,我就特指这个帖子(),我随便一搜就是一大堆资源,这里整理了分享给大家,只收1个顺手费用!
(6.94 KB, 下载次数: 24)
09:00 上传
08:58 上传
点击文件名下载附件
48 Bytes, 下载次数: 482
售价: 1 蛮牛币 &[]
[]: alphatt 乐于助人,奖励 1
每日推荐:
85650/10000排名<font color="#FF昨日变化主题帖子积分
常驻蛮牛, 积分 5650, 距离下一级还需 4350 积分
常驻蛮牛, 积分 5650, 距离下一级还需 4350 积分
在线时间1274 小时
的顶顶顶顶顶的顶顶顶顶顶
每日推荐:
71767/5000排名<font color="#FF昨日变化2主题帖子积分
日久生情, 积分 1767, 距离下一级还需 3233 积分
日久生情, 积分 1767, 距离下一级还需 3233 积分
蛮牛币8220
在线时间288 小时
谢谢楼主分享
每日推荐:
5812/1000排名<font color="#FF昨日变化主题帖子积分
熟悉之中, 积分 812, 距离下一级还需 188 积分
熟悉之中, 积分 812, 距离下一级还需 188 积分
蛮牛币1733
在线时间205 小时
感谢。。。。。。。。。。。。
每日推荐:
5594/1000排名<font color="#FF昨日变化3主题帖子积分
熟悉之中, 积分 594, 距离下一级还需 406 积分
熟悉之中, 积分 594, 距离下一级还需 406 积分
蛮牛币4313
在线时间151 小时
就送你一个呵呵 认真你就输了 谢谢
每日推荐:
3222/300排名<font color="#FF昨日变化1主题帖子积分
偶尔光临, 积分 222, 距离下一级还需 78 积分
偶尔光临, 积分 222, 距离下一级还需 78 积分
在线时间45 小时
謝謝分享 載來瞧瞧~
[]: peter52384 捡了钱没交公 蛮牛币 降了 1
每日推荐:
72225/5000排名<font color="#FF昨日变化主题帖子积分
日久生情, 积分 2225, 距离下一级还需 2775 积分
日久生情, 积分 2225, 距离下一级还需 2775 积分
蛮牛币3688
在线时间464 小时
就送你一个呵呵 认真你就输了 谢谢
人要脸,树要皮。
每日推荐:
头像被屏蔽
0排名99昨日变化主题帖子积分
蛮牛币4003
在线时间1193 小时
提示: 作者被禁止或删除 内容自动屏蔽
每日推荐:
3251/300排名<font color="#FF昨日变化5主题帖子积分
偶尔光临, 积分 251, 距离下一级还需 49 积分
偶尔光临, 积分 251, 距离下一级还需 49 积分
在线时间34 小时
vxpf饥渴了没了
每日推荐:
61427/1500排名<font color="#FF昨日变化4主题帖子积分
蛮牛粉丝, 积分 1427, 距离下一级还需 73 积分
蛮牛粉丝, 积分 1427, 距离下一级还需 73 积分
蛮牛币1078
在线时间386 小时
顶顶顶顶顶的顶顶顶顶顶
每日推荐:
5822/1000排名<font color="#FF昨日变化10主题帖子积分
熟悉之中, 积分 822, 距离下一级还需 178 积分
熟悉之中, 积分 822, 距离下一级还需 178 积分
蛮牛币3411
在线时间297 小时
每日推荐:
5923/1000排名<font color="#FF昨日变化6主题帖子积分
熟悉之中, 积分 923, 距离下一级还需 77 积分
熟悉之中, 积分 923, 距离下一级还需 77 积分
在线时间207 小时
顶顶顶 楼主& & 最喜欢楼主这样的。。。
每日推荐:
250/150排名<font color="#FF昨日变化3主题帖子积分
初来乍到, 积分 50, 距离下一级还需 100 积分
初来乍到, 积分 50, 距离下一级还需 100 积分
在线时间16 小时
谢谢楼主分享
[]: 此去经年人依旧 乐于助人,奖励 2
每日推荐:
3208/300排名<font color="#FF昨日变化3主题帖子积分
偶尔光临, 积分 208, 距离下一级还需 92 积分
偶尔光临, 积分 208, 距离下一级还需 92 积分
在线时间39 小时
Constructor
每日推荐:
3289/300排名<font color="#FF昨日变化4主题帖子积分
偶尔光临, 积分 289, 距离下一级还需 11 积分
偶尔光临, 积分 289, 距离下一级还需 11 积分
在线时间21 小时
谢谢楼主分享
每日推荐:
社区QQ达人
使用QQ帐号登录论坛的用户开始用unity进行基础VR开发之前,先确认硬件和软件已经按照进行了设置。
配置好并且安装好unity以后,在打开unity之前,保证DK2已经连接好,并且已经启动。在进行接下来的操作之前,先检查一下Oculus的 配置工具是否正常工作。可能需要先设置一个新用户来运行Demo场景。
创建你的第一个VR项目
先创建一个测试项目,然后创建一个能在VR中观察的立方体作为开始。如果你打算研究更详细的现成的VR示例,可以下载在中提到的
步骤1:在Unity启动时跳出的对话框中,创建一个空工程。
步骤2:平台选择里,选择PC, Mac & Linux Standalone。在最上面的菜单栏里选 File & Build Settings。
步骤3:在新建的空场景中,创建一个立方体(Game Object & 3D Object & Cube) 然后用移动工具把它的位置调整到默认的住摄像机前。
步骤4:保存当前场景(File & Save Scene).
步骤5:Edit & Project Settings &Player 打开Player 设置面板,检查是否已经勾选了“Virtual Reality Supported& 。
步骤6:点击界面上方的Play按钮,进入Play模式
现在应该可以在DK2上看到这个场景了,同时电脑屏幕的Game窗口里有摄像机的镜像。在DK2中向周围看一下,在Unity中会改变同样的位置或者旋转。
解决故障:如果你不能在DK2中看到场景, 一下的几个提示可能会有帮助:
·确认DK2在打开Unity 项目之前,已经正确的介入,并且已经打开。
·检查Occulus Configuration Utility(Occulus 配置程序)中的Demo Scene(示例场景) 是不是能够正常查看。
·升级显卡驱动
·确认已经安装了或者更高。
更多VR方面的援助,请到(Unity VR 官方论坛)
VR开发的实用信息
VR开发和标准Unity开发时很相&#20284;的,但是有一些需要注意的区别。
Editor中的(Frame Rate)帧数
在editor中查看项目时,需要注意因为渲染了两次同样的内容,可能觉得有一些延迟和抖动。渲染Unity IDE 同样会有一些复旦,所以最好是时常build一下项目,然后直接运行,来测试项目在设备上的性能。
摄像机移动
你不能直接在Unity中移动VR摄像机。如果希望移动或者旋转摄像机,需要把摄像机放到另一个GameObject下面成为子对象,然后对父对象进行进行操作。
比方说这个例子,VR Samples 项目中的Flayer and Maze。如果你希望获取这些节点的位置,需要使用 类。
摄像机节点
左&#30524;右&#30524;并不是在Unity中创建的,如果需要获取场景中各个&#30524;睛所在的位置,使用以下的脚本,然后添加到摄像机上。
&span style=&font-family:SimSfont-size:14&&using UnityE
using UnityEngine.VR;
public class UpdateEyeAnchors : MonoBehaviour
GameObject[] eyes = new GameObject[2];
string[] eyeAnchorNames ={ &LeftEyeAnchor&, &RightEyeAnchor& };void Update()
for (int i = 0; i & 2; ++i)
// If the eye anchor is no longer a child of us, don&#39;t use it
if (eyes[i] != null && eyes[i].transform.parent != transform)
// If we don&#39;t have an eye anchor, try to find one or create one
if (eyes[i] == null)
Transform t = transform.Find(eyeAnchorNames[i]);
eyes[i] = t.gameO
if (eyes[i] == null)
eyes[i] = new GameObject(eyeAnchorNames[i]);
eyes[i].transform.parent = gameObject.
// Update the eye transform
eyes[i].transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);
eyes[i].transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);
VR中的滤镜特效
VR项目中,很多图像滤镜效果都很消耗资源。由于渲染了两次场景,每只&#30524;一次,大多数滤镜都会对帧数和性能有很大影响而没有使用。
由于VR是 把&#30524;睛放在虚拟场景中来展示画面的,一些图像滤镜并没有什么意义。举例说明,景深,模糊,镜头光晕,基本上没有什么用,因为他们也不会在真实世界中看到。如果VR 头戴设备最终支持了&#30524;球追踪,那景深就有道理了。
有一些可以使用的滤镜:抗锯齿会很有用(特别是在低画质的时候),颜色分级 也是当然需要的(查看实用的获取更多信息),然后Bloom滤镜在某些游戏里会有效果,所以比较好的想法是去试验看看具体什么滤镜在游戏中有用。
Unity提供了一些合适的图像滤镜来给你使用(Assets & Import Package & Effects),Asset Store 中也有很多很棒的图像滤镜,例如,, 和 。
渲染比例(render scale)
根据正在运行的VR场景的复杂度,可能需要调整渲染尺寸。这会影响纹理:镜头前的像素比例修正,意味着我们会牺牲更多的性能和锐度。
这个只能通过代码来设置, 参考文档:,按照如下的代码设置比较容易:
&span style=&font-family:SimSfont-size:14&&using UnityE
using System.C
using UnityEngine.VR;
namespace VRStandardAssets.Examples
public class ExampleRenderScale : MonoBehaviour
[SerializeField] private float m_RenderScale = 1f;
//The render scale. Higher numbers = better quality, but trades performance
void Start ()
VRSettings.renderScale = m_RenderS
我们的VR演示项目里有个基础的例子,在Scenes/Examples/RenderScale&场景中。在MainMenu场景中也用到了。
修改渲染比例示例:Unity中默认的渲染比例是1.0:
如果把渲染比例调整到1.5,模型看起来更清晰:
最后,如果把渲染比例调整到0.5,图像看起来更像素化:
根据场景的运行状况,有可能需要降低渲染尺寸来增进显示性能,或者增加渲染比例来提高显示的锐利度。
现在你已经对Unity中的基础VR集成更熟悉了。下一篇文章,VR中的交互,会学习如何在VR中与物体交互。
本文已收录于以下专栏:
相关文章推荐
Unity引入了一些内置的支持,但是只针对几种特定的VR设备。这个指南会专注于Oculus 系列的VR设备, 特别是 Oculus Rift Development Kit 2 (DK2 ) 和 消费...
使用unity开发GearVR应用
&#160; &#160; 上一章我们介绍了如何运用unity3d开发Oculus
Rift应用,当然,这个便宜且强大的游戏引擎也可以用于GearVR的应用开发,这时我们需要...
&#160; &#160; 初识虚拟现实技术,非常倾心,奋力习之,阅《Learning Virtual Reality》一书之后觉得甚好,但不愿独乐乐,于是翻译之,与大家共同学习。本人学艺不精,难免有翻译不到位的地...
使用Unity3D进行VR游戏的开发,首先需要具备的条件
在VR开发中,我们经常需要激活一个用户正在盯着的物体。我们准备了一个示例,一个简单的可扩展的轻量级的系统,让用户和物体交互。这个系统由三个主要的脚本组成,VREyeRaycaster, VRIn...
如果你不是VR游戏或应用的开发者,可以选择无视下面的内容,这不是给普通用户看的~如果你之前曾经为Oculus Rift DK2或者Gear VR开发过,那么心里面一定曾经有千万个草泥马来回奔跑过。虽然...
VR虚拟现实&AR增强现实编程(2):Unity3D开发环境简介一 . 简介VR和AR的开发平台有Unity3D和UNREAL ENGINE。本系列主要使用Unity3D,因此本篇博文主要对Unity...
1.此处需要使用FingerGestures的插件,大家可以在这里找到最FingerGestures新版本下载地址,这个插件主要目地是帮我们识别手势。2.FingerGestures的包结构,在Ass...
学习一个新技术,有三个法宝:
法宝1: 掌握厂家提供的用户API手册法宝2: 掌握厂家提供的demo样例法宝3:《每个研发人员都应树立的一个demo模式》
故,学习魔镜4技术,亦如是也。
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)如何使用Unity 5等免费工具做VR创意原型
原始标题:
Gamelook报道/虽然到目前为止,仍然没有一款非常成功的VR硬件,也没有一款虚拟现实游戏大作,但VR这个单词绝对是2015年最热门的话题之一,不仅如此,资本界和传统游戏发行商以及平台运营商纷纷加入这个新兴的市场,甚至出现了多次十亿美元级别规模的并购。所以,不论如何,虚拟现实都已经开始出现了起步,其中不乏Valve、HTC三星、谷歌以及Facebook等大公司的入场,而且这几家公司都将在近期内推出VR硬件。据SuperData的数据估计,VR市场预计将在2019年达到159亿美元的规模。但是,另一方面,由于硬件和软件技术的限制,目前高质量的VR体验仍然需要解决很多的问题,而很多正在为之研发游戏的主流工作室都承认,他们自己都不知道在做什么。这其实就像是当时的《毁灭战士(DOOM)》和《德军司令部(Wolfenstein)》一样,没有人知道一个好的VR游戏到底长什么样,而且这个领域如今依然等待一些独立工作室成长为该领域的领导者。如果你想要做游戏,那么VR可能是一个不错的机会。所以,我们假设你希望做VR游戏,如今的工具已经比以往任何时候都更加对用户友好,而且大多数都是免费的。但是,你该从哪儿开始呢?别着急,这份博客会提供给新手开发者所有需要的工具,而且完全是免费的。所以,我们下面就开始讲述具体的内容:你需要准备什么:想要开始做VR游戏,你只需要3样东西:首先,你需要有VR头戴设备,目前销量最多的硬件是Oculus Rift DK2,售价为350美元;第二,你需要一个性能相当不错的PC,虚拟现实游戏的资源占用是普通PC游戏的三倍,所以一定要有强大的CPU和显卡,Oculus的推荐是i5+GTX 970或者同等配置,外加8GB的内存条。第三,你还需要最新版的Windows 7/8/10系统。除此之外,你所有需要的东西都是免费的。在软件方面,我们要使用的是:Unity 5个人版、The GIMP(Gnu Image Manipulation Program)软件、StreamVR的Unity插件、Primitive Plus的Unity插件、Oculus Windows Runtime。安装你的工具首先,我们把所有东西都安装好,下载并运行Unity安装器和GIMP软件,这都是自解压的程序,当你首次打开Unity的时候,它会提示你创建一个帐号,你需要有一个帐号,只是要记得用户们和密码。在Unity里,创建一个新项目(注意是3D项目而不是2D),把目录指向我的文档/My Project文件夹。然后,用浏览器进入Unity Asset Store商店,登录用户名,这时候,你可以获得开发者工具和资源。使用Primitive Plus和SteamVR链接以上工具,找到安装文件夹,点击‘用Unity打开’按钮,由于这些都是免费资源,你不需要投入一分钱,不过其他东西可能不是免费的,所以在选择的时候需要谨慎。按照弹出的提示,把这些安装包导入到Unity里。这时候,你应该可以从Project子目录看到新的文件夹。下载这些资源可能需要一点儿时间,所以要有耐心,在按照、导入完成之前不要关闭Unity软件。用Unity进行Scripting如果你之前学过编程的话,那么Unity用起来是非常容易的。如果你不熟悉C#语言,可以通过以下新手教程进行初步的熟悉,如果你之前任何编程都没有做过,最好也看一下这个简单的教程,然后解决Project Euler上的谜题,这可以让你熟悉在编程中将会遇到的问题,这些都是你需要的问题解决技巧。C#新手教学在你熟悉了用C#解决问题之后,我推荐投入一些时间探索Unity,你可以通过他们做的非常不错的新手引导教学,也可以付费参加Unity高阶课程。在这片博客中,我会为所有用到的组件进行简短的解释,但是,要做大的项目,你还需要看Unity的教程,因为它包含了很多有价值的信息。为了使用Unity脚本,你首先需要添加一个Object,在编辑器里,你可以用三种方式当中的一个创造3D物体:作为安装包直接导入;拖拽文件夹到My Project/Assets文件夹目录下;通过屏幕顶部的GameObject菜单用编辑器创造, 你可以通过这个方法做简单的形状,比如方块和球体,也可以创作文本和粒子。如果你选择导入,或者把它们拖拽到资源文件夹,他们就会出现在Project的附窗口内,你可以通过选择Scene进行选择然后把它们直接拖拽到游戏里。然后你就可以在游戏中看到这些物体。左上角的控制键可以让你对这些物体按照自己的喜好进行扩展、旋转或者定位。这些物体可以作为其他物体的父物体,只需要在Hierarchy标签下把它们的名字推拽到其他上面即可。一旦物体出现在场景中之后,你可以为之添加一个或者多个脚本,这些脚本可以让物体栩栩如生,比如可以让枪开火、子弹运动还可以让角色行走和说话。想要增加脚本,在Scene界面或者Hierarchy标签下选择你想要控制的物体,Inspector标签可以显示所有与该物体相关的组件,一个普通物体通常看起来会是这样的,而且包含以下元素:一个可以让引擎知道物体是什么形状的Mesh Filter滤镜;一个把物体描绘到屏幕上的渲染器;一个可以让物理引擎知道物体存在并定义其属性的Rigidbody;一个定义物体物理边界的Collider:你可以通过给一个复杂的物体赋简单的collider让物理计算更容易,比如一个箱子或者球体。从Inspector标签下,你可以通过底部的Add Component按钮添加新的脚本。从这里开始,你既可以增加一个已经创造好的脚本,也可以做一个新的。把语言切换成C#,输入你想要的名字,然后点击创建,这就会给物体增加一个空白的脚本,在Inspector标签下双击脚本名字会直接在MonoDevelop里打开这个脚本,这也就是Unity的代码编辑器。在你的新文件里,你会看到一个Start和Update功能,Start是当物体首次被创造的时候运行,这时候要做所有需要的创建步骤,Update则会一直运行,这里也是大多数的逻辑运算需要进行的地方。为了获得物体组件,你可以输入gameObject.Renderer、gameObject.rigidbody等等,主要取决于你希望控制的元素是什么。在Start运行之前调用的公用变量将会出现在编辑器中,所以它们变得更容易调整。为了获得如何与更多系统元素互动的信息,你可以去查看Unity使用指南。这是我创造的一个简单脚本,可以让物体按照正弦波进行有节奏地伸缩。在Unity里创建一个方块、增加脚本、复制脚本到Update method。然后你可以在编辑器里保存并点击Play按钮,这时候你应该可以看到方块不断地伸缩,要确保Camera物体放置在合适的位置,这样它才能看到物体。开启VR模式现在,我们创建了一个基本的Unity场景,那么下一步我们把它展示到你的VR头盔中,这时候,我们需要用到SteamVR插件,它既可以对Oculus Rift也可以对HTC Vive进行渲染,并且两种方式用起来都很方便。在Project标签下,进入SteamVR文件夹,打开prefab子文件夹,你会看到一些可以使用的对象。拖拽CameraRig和SteamVR预制件到场景中,这些已经包含了你所有需要的东西,把它们移动到你的场景中,放到同一个点,只有移动了它们,你才能看到方块。现在,删除原来的cemera物体,如果在场景中存在多个活跃的camera会导致trigger错误,因为Unity不知道你想用哪一个。这时候,如果你还没有安装Oculus Windows Runtime的话,这时候就可以进行安装了,然后把它连接到你的DK2。r/Oculus是一个非常不错的资源,demo场景应该很流畅地运行,然后追踪头部的旋转和定位,既没有jerkiness也没有双图像。如果它运行正常的话,确保你的Camera能够看到你,而且要确保它是正确的。还要确保你的显卡足够强大、后台没有运行特别占资源的应用。一旦确认了VR头盔运行正常以后,打开Unity并点击Play按钮,我们做的简单场景就可以出现在你的VR头盔中了,恭喜,你做出了第一个VR demo。做第一个VR游戏到目前来说,这一切看起来都是很简单的,但是,这个demo其实并不是很好。为了让你们体验更好的项目,接下来我会讲述制作一个完整VR街机游戏的过程,这是我已经完成了的项目,它叫做ASteroidVR。这并不是《Skyrim》那样的大作,但至少是一个可以玩的完整游戏,有可以使用的图形和完整的一套玩法。我做这款游戏用了几天的时间,而且属于证明概念型的demo级别,你将会用不同类型的游戏进行很多的尝试。这个游戏其实很简单:你将驾驶一艘被困在大房间里的船,这艘船会按照常速移动,你可以驾驶和射击,但没办法停止。这个房间会慢慢地被随机尺寸的小行星所充满,它们会在房间里无目的的弹跳。你需要做的就是避免撞到这些小行星,也不要撞墙,保持尽可能长的时间。你可以对小行星射击,但你如果打光的话,你弹夹装弹速度会很慢。这就是该游戏的基本理念,所以,我们不妨从下面开始讲如何制作。由于这只是一个demo,所以我们只用简单的初始图形,比如方块和球体(使用Primitive Plus资源)。船这就是我创作的船。我承认,它看起来更像一个铲车,但至少对于这个demo来说够用了。当创建驾驶员座舱的时候,确保为用户视角做一些明显的结构,特别是在边缘部分。这可以避免用固定的元素、减少他们需要移动的感觉,避免让玩家产生动态眩晕感。这样,他们的大脑就更容易处理缺少移动的情况。我不得不尝试了多个驾驶员座舱,直到找到了一个不让我感到眩晕的为止。当你有所怀疑的时候,增加更多的支杆,把摄像头移到背后。这时候放大一定要谨慎,因为你在Unity增加一个单位,在VR里就是多了一米,所以一定要注意你创造的物体大小,因为你做的物体很容易在VR里看起来太大或者太小,而一旦做好了之后,这些问题就没法解决了。在完成了船的打造之后,在它的周围做一个方块,并且把船的所有Primitive都与之链接,这样可以作为一个Collision盒子与运动中心,为外部的方块增加rigidbody,禁用渲染(只要不在inspector中检查即可)。确保rigidbody已经设置好,这样kinematic和use gravity都会被禁用。为船的每一个Primitive增加另一个rigidbody,这次要把设置调整为kinematic,但要关掉use gravity选项。移动CameraRig和SteamVR物体到驾驶员座舱内,并且把它们固定到用户的头部在船內的位置,这时候我会用Unity的另一个免费资源确保位置摆放正确(仿真机器人),把它们父级化(parent)到外部的方块,这样就会让他们的移动跟随物体一起移动。然后为船写脚本,以下是我创造的两个脚本,Vehicle Controller和Vehicle Destroyer。第一个脚本是从用户那里读取输入,为船体提供推力,确保船体移动。第二个用于侦测船和一些标签为石头的物体相撞的时候,一旦发生碰撞就终止游戏。为了增加更多的乐趣,它还会把船体拆分成各种组件,让你看到他们在碰撞中四散开来。这个脚本会创造一系列的object,你需要用船的属性进行填充,当然,是在编辑器内做。这个脚本还会在玩家死亡的时候展示一些指导教学,创造一个TextMesh GameObject,然后把它设置为提示‘你已经死亡,射击以便重新开始’,把这个TextMesh放到驾驶员座舱内,把它父级化到船体上,禁用它的渲染组件。然后拖拽到Inspector里的VehicleDestroy脚本instruction变量中,正常情况下你是看不到文本的,但在角色死亡的时候会再次出现。小行星下一步,我们来创作行星。这是我做出来的一个行星,主要是通过把一些属性放在一起做成的,使用了标准的着色器,没有使用任何复杂的功能,但它看起来还不错。我增加了一个rigidbody,把它标记为Rock,如果你不熟悉Unity的tag系统,最好是了解一下教程。基本来说,tag可以让你把特殊的属性附加到对象上,这在撞击的时候可以被侦测到,让脚本知道他们在和什么互动。在这个案例中,tag会导致船目标侦测到它撞到了危险的东西。然后给行星做脚本,这里的脚本是AsteroidInit,主要做两件事。首先,它会对行星进行随机化大小,让它们看起来是有区别的,并且每一个都从不同方向出现。其次,它会侦测行星是否会被标记为子弹的物体击中,如果被击中,那么它就会激活附属的粒子发射器,把原有的对象破坏掉。竞技场非常好,这两个基本的游戏元素已经做好了,下一步,就是做竞技场。它可以是你想要的任何形状,但确保它足够大,因为如果让人们在小圈子里转的话,他们很容易不适,通常来说,直接飞行的方式相对没有那么大的负面影响。把所有的墙体都标记为Rock,确保当船体撞到的时候就会被撞毁,这就是我最后做出来的竞技场:你会注意到,这些墙体都带有一个简单的placeholder texture,我是用GIMP做的。大多数情况下,我设计这个游戏是用无特色审美观确保其简单性,然而,我发现当冲向一面墙的时候很难被告知,很容易出现问题。所以,为了配合玩法,我给它们加入了texture,我还为竞技场增加了粒子发射器,确保它可以告诉你在靠近一个对象的时候是如何移动的。幸运的是,竞技场看起来非常被动,所以它们并不需要脚本。最后,创造一个Primitive数据并且把它放到墙体上。这将会成为你的行星掉落点,为之增加脚本,你会注意到的是,脚本调用的是Asteroid GameObject变量,这在编辑器里是可以看到的。在编辑器里把你的行星对象拖拽它的上面,这样你就可以产生无数个行星,频率大概是每秒一个,给游戏增加缓慢增长的难度曲线,把最初的行星放置到很远的地方,避免它会偶尔被破坏或者带来任何问题。HUD和枪支这时候,游戏的基本对象都是可玩的了。现在,我们给游戏增加一些第二功能,让游戏变得更有深度。这个脚本是和TextMesh放在一起的,可以记录玩家在游戏里活了多久。第二个脚本与一个文件互动,确定你的最高分数,当你重启的时候就会看到,这时候,一个简单的排行榜系统就出炉了,这可以给玩家创造一个目标。把这些都放置到驾驶员座舱内可以很容易看到的位置。最后,我们需要加入玩家使用的枪支,为船体增加枪支对象,这其实也并不复杂,把脚本拖拽到枪上,你还需要链接到子弹对象,它可以是带有rigidbody和子弹标签的任何物体。把它的颜色调亮,这样才能做到可视化。把这个脚本增加到另一个TextMesh中,把它放置到驾驶员座舱内,以便玩家很容易看到。最后的调整做到这一步,游戏基本上已经完成大部分了,游戏所需要的所有基本元素都已经完成了,现在是时候测试了,你可以改变行星的尺寸范围,竞技场的尺寸和范围、船行的速度,ammo的量、装弹频率以及冷却时间等等。你可以用船的方式进行处理。如果你希望这么做,并且具有一些3D模型技巧,那么你甚至可以取代我的编程美术资源,使用真实的资源做一个更好的游戏。最重要的是,一定要多试验几次,确认怎样让你感觉良好,而且测试者没有不适感。如果你希望了解完整的Unity项目并且进行使用的话,你可以自行下载,如果你只是为了像我一样做个可玩的游戏,那么只需要简单地下载一些东西就可以了。做你自己的demo如果你一直用自己的教程做游戏,并且有时候遇到了不理解的东西,那么你可能最后要非常好地处理用Unity做VR游戏的基本操作了,如果你想更近一步,那么最好是做足准备。也就是说,VR游戏研发和传统游戏相比是完全不同的,所以我会说一些比较通用的VR游戏研发建议,主要是为了让VR游戏设计更舒适,还可以充分利用媒介的优势。动态传感首先而且最重要的是,矫正用户的头部动态传感,不要放大物体,把它覆盖起来,改变视角,或者加入一些基本的东西,否则的话就会和基本元素混合。Oculus和Valve都在避免让人们产生眩晕方面做了大量工作,除非你手中有一些感知心理学的书籍,但你并不一定要容忍这些,没有什么比一个十米大的物体卡在你脑海中10秒钟以上更能够带来不适感了。同样的,做动态传感也需要仔细,让人们出现不适感的最主要原因是,当他们的眼镜受到了动态信息之后,但内耳并没有收到。总体来说,确保动态传感缓慢而稳定。加速应该是瞬发的,旋转应该是最小化的。当旋转必须发生的时候,给玩家提供固定的点位作为周围视野的参照。如果可以的话,最好不要做带有传感的游戏,你在单个房间里可以做很多非常酷的东西,或者也可以使用微型对象,这样的游戏体验就会变得更加舒适和愉悦。UI设计很多人在做VR游戏的时候,理所当然地希望把物体都放到玩家头部周围,就像是军用HUD。不幸的是,这种方法被证明是不太好用的。当你的眼镜专注于任何游戏世界里比较远的东西的时候,离你头部近的对象就会变成像素级的图像,另外,盯着太近的物体看会让眼睛疲劳。为避免这种情况,你要尝试把UI尽可能放到游戏世界里,可以把《Dead Space》作为参考,你会看到在AsteroidsVR demo里,所有的UI都是围绕驾驶员座舱的,因为这是玩家周围的空间,所有的UI都看起来非常舒适。同样,要注意文本,目前的VR头盔分辨率都非常低,特别是当你计算他们占据多大视野的时候,这意味着文本可能是很难阅读的,所以,尽可能不要依赖它,你所提供的文本应该足够大,在普通视角下可以阅读就行了。图形优化你需要记得的是,VR是非常增强型的体验,DK2需要运行在1080p、3D和75FPS帧率条件下,消费者版本的Rift和HTC Vive都会运行在更高分辨率和帧率的状态下。如果不能达到这样的帧率,将会导致出现双屏闪烁的视野,这是让人很沮丧的,也很容易分心并导致眼疲劳。因此,你对于性能的设计要比平常更谨慎,这意味着要降低poly-count,最小化图形效果,使用简单的模型,确保光源最小化,禁用动态阴影并且尝试用同样的材料做尽可能多的对象。在Inspector里,你还要把所有不变化或者移动的对象标记为静态,这样Unity就可以更容易把它们组合到一起并节约性能。如果可能的话,在游戏设计方面做限制,可以为游戏设计成卡通风格。总体来说,如果你可以在不伤害游戏的前提下减少视觉效果,那最好就这么做。该规则唯一的例外就是抗锯齿,在每个人的眼中,他们看到的锯齿都不一样,这样会导致3D效果降低,引起眼疲劳。所以,你要尽可能多的使用抗锯齿功能(我推荐用MSAA),还要避免出现高频率视觉细节的纹理,比如树叶、微粒或者远处复杂的纹理。有些视觉效果是不适合VR的,即便你可以做,也最好不要用。在做后期效果处理的时候要谨慎,比如鲜花盛开,它们本身就会带有立体视差。还有,你需要意识到的是3D会让一些常见的视觉欺骗看起来非常糟糕。普通地图、游戏里的主要物品在VR里近看的时候都是平的,用于爆炸效果的billboard sprite看起来也是平的,而且这会破坏游戏的沉浸感。同样,很多用于渲染碎片或者植物的sprite技术看起来也是扁平和别扭的。最后,要提防透明物体,现代的渲染引擎在追踪同一个场景中的透明物体的深度方面是有问题的,所以,你要避免从一个透明物体可以看到另一个透明物体的情况。或许你会发现,在去掉了所有的图像效果之后,你的游戏看起来有些单调,可以尝试使用光贴图和环境遮挡。光贴图可以直接把光照bake到地图的纹理层中,这对于所有不移动的物体来说都是不错的,可以给游戏世界增加更多的深度。对于动态物体,比如游戏角色,开发者们可以考虑使用Shadow blob纹理创造环境遮挡。它并不是完全现实主义的,但非常有帮助。随着时间的进展,这些技巧可能都没有那么必要,但目前来说,你还是需要充分利用这些特点来节约性能的。尽早并且频繁地实验我最重要的建议就是,忘掉你的先入为主的成见,VR和我们之前做过的游戏都不一样,有些优势和限制是所有人都无法预测的,有些在纸上看起来很好的想法,但实际用的时候却是很糟糕的。有些最受欢迎的VR体验也变成了非常奇怪的东西。VR是一个全新的媒介,没有人完全理解它的规则。在传统的游戏领域,我们非常清楚如何做FPS、RPG等类型的游戏,这些基本的内容已经非常固定的,这些都是非常固定的规则,每一个新游戏都是一种提高,但通常并不一定是新的内容。在VR领域,除了新类型之外就没有什么是新的了,目前这个领域还没有被完全开发,没有人知道他们自己在做什么。这让人非常兴奋,但它也意味着你必须做到灵活,如果你有个非常不错的想法,那就立即去做,尽快做一个创意原型,然后看是否有效果。但是,也要做好失败的准备,如果你的想法不够有趣或者游戏让玩家感到不适,那么就放弃并且开始新的想法。最好是每周都做一款新游戏,或者每天也可以,直到你挖到金矿为之。你做的失败的创意原型越多,那么你做出非常酷的游戏的概率就越大。要做非常奇怪的游戏,没有人知道什么是有用或者什么是没有用的,所以要广撒网,有时候后来被证明是精彩游戏的想法会让你都吃惊。所以,是时候尝试做一些新游戏了,以上就是博客的全文了,祝你们获得有趣的创作体验。*本文转自:网络*文章版权归原作者所有温馨提示:长按此二维码进行关注,一起引领科技潮流~
VR资源网整理出品

我要回帖

更多关于 ae脚本粒子汇聚消散 的文章

 

随机推荐