unity 如何制作成unity 制作网页游戏戏版本:游戏在unity中制作好后,如何发布成网页形式的游戏?

账号密码登录
免密码登录
获取验证码
第三方账号登录
Hello,新朋友
在发表评论的时候你至少需要一个响亮的昵称
你还在用Unity做游戏?更多次世代引擎助你成就旷世之作
首发且原创
阅读:13551次
来源:NEXT创业空间
摘要:时至今日,游戏产业早已今非昔比,酷炫逼真的画面,丰富的剧情,多样的题材。作为一个具有一本万利潜质的行业,自然也有越来越多的淘金者加入其中。而作为游戏开发者来讲,在拥有天马行空的策划和妙笔丹青的美工后,如何在程序上惟妙惟肖的将灵感表达出来,这就是程序猿们要去斟酌的事情了
——科技频道主编:Techbin本文封面:《战地4》截图,来自“3”引擎行业趋势时至今日,产业早已今非昔比,酷炫逼真的画面,丰富的剧情,多样的题材。作为一个具有一本万利潜质的行业,自然也有越来越多的淘金者加入其中。而作为者来讲,在拥有天马行空的策划和妙笔丹青的美工后,如何在程序上惟妙惟肖的将灵感表达出来,这就是程序猿们要去斟酌的事情了,而现在的早已告别了那个闷头写代码的年代,越来越多的都依靠强大的来实现,光影、粒子、碰撞等等,对于开发者来讲,选择合适的可以帮助其更高效、经济、酷炫的制作心仪的。对于投资人来说,对的了解也有助于更加精准的评估一个项目最终可以实现的效果。而对于普通玩家,从引擎的角度上去了解,也能增加谈资,提升逼格,比如以后再聊到LOL和DOTA2这种不死不休的话题的时候“你们先等等,咱先说说RIOT自制引擎和Source引擎的区别,我再跟你们接着撕逼”。LOL DOTA2什么是游戏引擎游戏引擎到底是个什么鬼?用猿话说:游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件... ...好吧,用人话说就是:游戏引擎就是那个专门拿来做游戏的软件。我承认这样说确实不完全准确,但毕竟更便于小白们入门理解。这就好比你做演示文稿的时候,是用“PPT”还是“keynote”,修图的时候用“PS”还是“美图秀秀”,剪视频时是用“爱剪辑”还是“Final Cut”。同样的道理,一款游戏的引擎是基于“寒霜3”,“虚幻4”,还是“unity 3D”,对于不同的工作来讲它们的工作效率和实现的效果都是不一样的。这些游戏引擎为游戏设计者提供各种编写游戏所需的工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、Windows。一般来说游戏引擎包含以下系统:渲染引擎、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。游戏引擎:用来做游戏的软件而游戏引擎的开发本也是一个辛勤种树供后人乘凉的行当,比如LithTech引擎的开发共花了整整五年时间,耗资700万美元,连他们的老板自己也懊悔到“如果当初意识到制作自己的引擎要付出这么大的代价的话,我们根本就不可能去做这种傻事”。而对于一个成功的游戏引擎来讲,可能带来的报酬也十分的诱人,引擎的付费方式主要有三种,第一种是一视同仁的授权模式,比如经济实惠的“unity”引擎,授权费需要1500刀。第二种是收入分成模式,比如“虚幻4”需要在任何使用其引擎的游戏总收入中收取5%的授权费(是总收入不是总利润,两年前可是25%)。至于第三种就需要去依项目而异,去跟引擎公司谈合作了,比如某公司的报价单显示,其软件使用“寒霜3”引擎的授权费高达120万美元,这个价格也可以作为如今获取寒霜3引擎授权的参考价格。对于不同项目来说,不同的引擎付费模式可能会带来最终产品在成本上的巨大差异,开发之前务必细心斟酌,开发完成后死在引擎授权费上而功亏一篑的游戏也并不少见。强大的引擎往往需要昂贵的授权费案例一:虚幻4因为游戏引擎众多,我们选取几个具有代表性的引擎为例来做一分析。首先,我们来聊一聊在顶级引擎行列中最为亲民的“虚幻4”。之所以说它亲民,其一是因为他的付费模式,游戏总收入的5%,如果你的项目最终无法实现理想的营收,那么你也不用支付过于高昂的授权费用。而其二是因为如此强大的引擎却有着超低的入门学习成本,社区支持强大,有大量的视频教程和资源,平台工具和功能随时都在更新,有些工具甚至连没有任何基础的初中生都能熟练的使用。免费使用、收益分成没错,这是一个理论上可以不写一行代码就可以做出整个游戏的引擎!整个虚幻引擎和编辑器的设计思路就是“所见即所得”,操作界面高度图形化。而对于游戏的画面效果,如加以精心利用,足以“以假乱真”。《虚幻》所见即所得但必须要提到的一点是,“虚幻4”可以实现的很多功能有着很强的次世代属性,比如他可以实现几百万个粒子的同屏渲染,而就目前的PC硬件环境而言,几千个粒子就已经可以将GPU性能压榨殆尽了。很多使用“虚幻4”开发手机游戏的开发者更是表示,很多效果看上去很好但实际上根本不敢用,这反而会令人困惑,骨子里过于写实的风格也并不适合所有游戏的开发。另外,此引擎对于低档画质的支持也并不太友好,网游们基本都望而却步,因为没有人希望开发出的网游产品只有那么一小波发烧友能玩儿的开心,一个活生生的例子就是大家耳熟能详的“剑灵”。这个被常年作为画质标杆的网游因为画质要求过高在不少网吧中都无法达到理想的游戏体验,过份的降低画质选项后却又是“妈都不认识”的尴尬,然而它所用的引擎还只是“虚幻3”。《剑灵》所使用的“虚幻3”,已然成为网吧硬件杀手这一方面,同为“写实画质游戏”的“天涯明月刀”就处理的更加友好,降低画质后在中低性能硬件上也能有不错的体验,当然后者采用腾讯和英伟达联合开发的“Quicksilver”引擎。总体来说,如果你的游戏画面风格是写实风,很在意画面的粒子、光影等表现。想要做一个赏心悦目的极客单机游戏,又不想在编码等方面下太多功夫,那么“虚幻4”也许就是非常适合你的。而如果你是一名投资人,当有团队告诉你他们在用“虚幻4”或“寒霜3”一类的引擎做“吊炸天”的网游的时候,也许你就应该多细心的去评估一下这个游戏的受众市场了,当然,这么做的也不是没有,比如韩国MMORPG网游大作《失落的方舟》,虽说从宣传片的角度无论从画面、打击感以及玩法来看都非常不错,但受制于全民硬件,市场表现如何还要打上一个问号。《虚幻4》的次世代画质再有就是,如果你师从腾讯,将阉割大法练就的炉火纯青,能把“虚幻3”阉成“逆战”这样,那么将“虚幻4”阉成全民网游也并非不可能。要说“虚幻4”的画面如何如何牛逼,实际上其画面上的缺陷倒也并非没有,最明显的可能就是虚幻系列从古至今浓浓的“油画风”,无论你渲染的材质是石材还是布匹,表面都会有一种强烈的油腻感,虽说这并不是一个绝对意义上的缺陷,这样的风格有时确实可以增加整个画面的光影表现力,但要把它当作缺陷还是特点就因人而异了。《虚幻》所渲染材质的油腻感案例二:寒霜3既然说到了虚幻,我们不妨再来聊聊它的宿敌“寒霜”,“寒霜3”最具代表性的作品就是“战地4”,同样出色的材质渲染、光影、动作表现。但要说到此引擎最具特点的地方,两个字,“破坏”,如果再加两个字,那就是“地图”。在画面写实表现跟虚幻难分伯仲的基础上,寒霜引擎额外的特长就是运作庞大而细节丰富的地图,并且各种绚丽的破坏建筑、载具、城墙、电线杆、垃圾桶… …并在爆破等破坏效果的运算上造诣颇深,并不需要太多的算力资源就能做出震撼逼真的效果。“破坏”和“地图是《寒霜》引擎的专长当然这个优势也会映射到碰撞、击打等方面。简单的说,如果你用寒霜引擎开发游戏,剧情里不多炸点东西搞点破坏,实在是对不起你老板为你花的那天价授权费。实际上寒霜最开始就是为“战地”而量身定做的,多年的发展使其越发的多面化,适应更多的开发需求,但最大的特点依然是“战地型”游戏的表现。几十公里庞大开放的地图,复杂的草木细节,炮火连天残垣断壁瓦利横飞,如果你有这样的需求,那么这个星球上应该没有比“寒霜”更加合适你的引擎了。“寒霜”很适合大战争场面的渲染除了战争射击类游戏之外,从其他使用寒霜的大作上也可以看出一些端倪。《极品飞车18》摩擦力表现,车辆碰撞,路面设施的破坏,庞大开放的地图......——寒霜。《FIFA17》球员和足球的碰撞,重力影响,身体接触… ...——寒霜。《植物大战僵尸:花园战争》别拿豌豆不当子弹,别拿西瓜不当炸弹… ...——寒霜。这里说了很多寒霜在碰撞破坏及地图上专长表现,是为了突出它独一无二的一面,但有一点还请大家不要误会,“寒霜3”实际上是一个非常全面非常出色的全能引擎,特别是2016年起EA进一步的展开“寒霜引擎通用计划”,也会让它今后的应用环境更加的多面化。EA传家宝“寒霜”正在向全能化发展只是说考虑到它高冷的价格,选择它很大的原因自然是它那无可替代的一面。当然如果你本来就在EA工作,就算你要用寒霜去做俄罗斯方块,我们也只能说,你开心就好… 总的来说,如果你是游戏的开发者,游戏项目中有不少破坏性,并需要庞大开放的地图,面向大型单机群体,那么在资金充裕的情况下,不妨试着去跟EA勾搭勾搭。寒霜3在手,要是游戏还做不出一点感觉,那我只能说看来做游戏这行真心不适合你了。作为投资人来说,在对于计划使用寒霜引擎的项目做评估的时候,别忘了加上引擎授权那上百万美元的预算。当然还有一点跟“虚幻4”是类似的,网游项目慎用“寒霜3”。不过说到这里有句前文讲过一遍的话不知还当讲否…如果你师从腾讯,将阉割大法练就的炉火纯青,能把“寒霜3”阉成“极品飞车OL”这样,那么用“寒霜3”做全民网游也并非不可以...腾讯很擅长对游戏画面做大众化的“阉割”案例三:Unity 3D接下来,我们来聊聊应用范围最广,用户群体最大的游戏引擎“Unity 3D”,它大众到了什么地步,在这里给大家一些参考数据。截至一年前,Unity全球注册用户超过400万,编辑器月活跃数量达40万,PC插件安装量达2亿。在中国手游市场占有率达75%。毫无疑问,这是目前最火的游戏引擎,甚至更严格地说,Unity本就不止是游戏引擎。依小编的个人看法,Unity的最终目标是取代flash,确实除了html5方面的进展有点慢之外,其他方面的进展都是非常顺利的。作为市场占有量最大的引擎,unity的优势并不在于游戏效果上的精益求精,而是它的无所不能。Unity是非常通用的开发工具如果说前文中的虚幻和寒霜作为游戏工具来讲是倚天剑和屠龙刀,加以善用方毁天灭地,那么Unity就好比是一整套厨房刀具,你就说要干啥吧,切菜,剁肉还是雕萝卜?强大的资源商店,多如牛毛的第三方插件,绝大部分的操作也都可以在插件或资源包中完成,也并不需要自己没完没了的敲代码,甚至于你别的啥都不做,只需要选插件拼资源删功能,都能拼出一个完整的游戏出来。Unity的通用性非常强,可以开发出基于各种平台的游戏,包括手机游戏(iPhone、Android、Windows Phone、黑莓)、PC(Windows、Mac、Linux)、网页游戏(基于各种主流浏览器)、游戏机专用游戏(Wii、Xbox360、XboxOne、PS3、PS4)等等。Unity非常全能、支持几乎所有的平台Unity的特性让它很适合做手机游戏的开发,甚至有不少人误认为Unity 3D就是用来做手游的,授权廉价且易于上手。没有任何游戏制作经验的人通过官方教程,全力钻研一周要是还不能完整的做出一个小游戏,大可来找小编要个说法。无论是何种游戏的开发,Unity 3D引擎也许都会是制作周期最短的选择,但因为它过于杂食,想要在效果上精益求精虽不敢说不可能,但这毕竟不是Unity的专长。这里要澄清一点,Unity并非做不出大型游戏,只是若不在程序编码上下大力气,仅靠着插件和资源包的拼拼补补,效果上的确难以和“寒霜”“虚幻”等引擎抗衡。一个活生生的例子就是《仙剑奇侠转6》,要说它是最大型的Unity单机游戏之一恐怕也并不为过,了解过的人都知道,虽然Unity很适合做低配置群体的游戏开发,但在大资源作品环境中,同档次的画质和特效条件下,它是配置需求最低的吗?非也。《生化奇兵1》是07年用“cryengine”引擎做的游戏,抛开风格的差异不说,单说画面及特效质量,恐怕比起《仙剑六》也是不遑多让,而《仙剑六》的配置需求却高出差不多一倍。可见Unity引擎的优势并不是节省硬件资源,而是从根源上确实更适合开发中小单机游戏、网游、页游以及手游。生化奇兵1 仙剑奇侠转6其实无论是单机还是网游Unity 3D做大型游戏都有很多弊端,虽说这些弊端可以通过人为努力而修正,但如果真的愿意将花如此多的精力在Unity上下功夫,这些大项目为什么不直接去使用更加专业的引擎呢?这看上去好像很有道理,但 事实远非如此简单,坚持用Unity开发出的优秀大作也并不少见,抛开简单而精良的《炉石传说》不说,《The Golf Club》《tranded Deep》《The Forest》等等真的不要太多。究其根本原因还是因为Unity树大根深,几乎整个行业都在使用Unity 3D,已经变成了一种潮流。如果你是一位游戏公司老板,要招一个熟悉虚幻寒霜的程序,翻遍整个中国都找不出多少来,能灵活运用的更是凤毛麟角。但如果你要招会Unity 3D的,很多应届毕业生在学校学的就是这个,熟手老油条更是数不胜数,虽然实话说它并不容易做出赏心悦目的作品,但潮流如此,又能怎样。而对于谋业者来说,正是因为这样,整个市场对于unity开发者的需求远高出在职人数。Unity具有庞大的市场需求商机和趋势Unity自学周期短,从零学起到达到从业需求不超过一年,如今的市场环境年薪可轻松达到十万元以上,而另一方面,Unity 3D的培训也不失为一个很好的创业方向,门槛低,学员出路广,薪水高,另别忘了Unity的应用环境绝不仅仅是游戏,作为NEXT创业空间的科技主编,商机当然要分享给大家啦。不过话说回来,对于游戏行业而言,虚幻、寒霜、cryengine这些专业大牌引擎也绝对是蕴藏着强大力量的宝藏,随着玩家眼光的逐步提高,手机及PC硬件性能的进一步提升,强大的引擎力挽狂澜也是可以预见的趋势。未来的游戏市场需要更强大的引擎最后简单的说一句题外话:其实单从游戏这一个小小的片面来看,我们对硬件性能的追求也只会更加的狂热,在强大的游戏引擎面前,开发商们犹如槛花笼鹤,在软硬件的螺旋关系面前,从开发者的角度上来讲,反而是软件走在了前面。硬件并非过剩、应用环境的发展取决于硬件的极限和大众的预算
声明:本文由NEXT创业空间企业号发布,依据企业号用户协议,该企业号为文章的真实性和准确性负责。创头条作为品牌传播平台,只为传播效果负责,在文章不存在违反法律规定的情况下,不继续承担甄别文章内容和观点的义务。
订阅企业号
TA的其他文章
11043次阅读
17503次阅读
15089次阅读
14494次阅读
13801次阅读
72小时热文
5.3万次阅读
2.1万次阅读
9886次阅读
9844次阅读
9823次阅读
9773次阅读
9771次阅读
9758次阅读
阅读下一篇
接连搞出“大新闻”,英特尔进入“后PC时代”
创头条精选
扫描二维码关注
微信扫码咨询2903人阅读
游戏--Unity3D(9)
游戏--VR/AR(14)
随着Oculus宣布1月6日开启预售,2016年很可能成为VR游戏元年,但很多的调研显示,手游设备才是市场增长的关键,SuperData发布的报告显示,2016年全球VR游戏市场规模预计在51亿美元左右,消费者设备安装量在3890万左右,凭借价格门槛的优势,以谷歌Cardboard和三星Gear VR为代表的移动VR设备很大可能成为用户量最大的设备,可能占据2016年虚拟现实设备安装量71%的份额,达到2700万。
最近,一位从事VR游戏研发的开发者在自己的博客中展示了如何用Unity和Cardboard把一款3D游戏变成VR游戏的方法,他在文章最后还表示,你甚至可以用这种方法把游戏转化为AR游戏,或者从头开始做新的VR游戏,以下是Gamelook编译的博文:
很多的科幻电影都展示了用人类意志控制物体的能力,但到目前为止,这仍旧是一种幻想,目前还没有技术可以实现这一点。在这份新手教学博客中,你可以学到如何用Unity做一款兼但的虚拟现实游戏,配合谷歌Cardboard创造比较简单的VR体验,本文主要讲的是:
把Cardboard摄像头集成到你的游戏中;调整UI元素以适应VR模式;做VR模式下可以选择的按钮;在游戏运行的时候程序化地把游戏在常规和VR模式下进行切换。
什么是谷歌Cardboard?
理论上说,创造VR体验是非常直接的,你在屏幕上展示的并不是一个单独的图片,而是需要2个。因为它们来自位置相隔几英寸距离的两个摄像头,玩家们从左摄像头看到的是左边图像,右边看到的则是右边图像,这就创造了游戏景深。
此外,再加上一些不错的动态传感器,你可以探测到用户面朝哪个方向。把这些和你所创造的3D世界结合起来的话,就可以获得一个沉浸感很强的游戏体验。在实际情况中,在一个高分辨率的屏幕上展示两个图像需要非常复杂的硬件,还需要可以追踪玩家的头部运动,把所有的功能集成到一个设备商,还要控制其重量,以免让用户戴起来太累。
然而,随着谷歌Cardboard的出现,每一台智能机都有可能与Cardboard协作,可以用你手机的屏幕与传感器,把它们变成VR设备的一种,而你所需要的,只是一些Cardboard和塑料镜片。
需要注意的是,你可能大量用到Unity GUI,所以如果从来没有尝试过这个工具,那么最好是看看Unity GUI教程。想要用Google Cardboard做出自己的VR游戏,你需要以下工具:
Unity专业版,版本5以上;一部智能机,可以是iPhone 5代以后的设备,也可以是4.3以上版本的设备。需要说的是,本文假设你是在用iPhone获得VR游戏体验。
如果你从来没有用过Unity而且也不熟悉界面,那最好是去读Unity教程介绍
可能会有人说,我如何获得一个Cardboard硬件呢?
当然,如果还没有Cardboard设备的话,最好是从供应商那里选购,价格加运费大约是20-30美元,如果你觉得自己非常善于DIY,也可以动手做自己的版本。在购买Cardboard的时候,要注意提到V2或者Cardboard 2.0的字样,因为它们适配大量的手机,包括大屏幕的iPhone 6+在内,它们还支持用户通过按钮进行输入操作。
没有Cardboard设备可以吗?
从某种程度上说,是可以的,你仍然可以在自己的设备上运行做出来的游戏,它看起来会是这样的(下图):
在玩游戏的时候,如果你用恰当的方式盯着屏幕看,也可以找到VR的感觉。如果你四处移动手机,就可以进行控制。虽然你也可以玩这款游戏,还能够看到游戏的实际效果,但这种体验是比较有限的。
长话短说,如果你没有足够的耐心等待Cardboard到货,你仍然可以从本文中学到东西,只是,如果有合适的设备,你能够学的东西更多。
样本游戏:Ninja Attack is Back!
投入一些时间尝试这个样本游戏,下载并解压这个Unity新手项目。接下来就是运行Unity,在欢迎界面,选择打开(Open)-找到StarterNinja文件夹,打开NinjaAttack项目。
在项目浏览器(Project Browser)中,在Assets里双击MainScene按钮,然后点击Play尝试一下这款游戏。在图片中,你是左边的忍者,随着怪兽在屏幕中出现,你可以在屏幕上点击任何地方释放一个忍者之星消灭怪兽,在击杀20个怪兽之后,你就赢了,但是,如果怪兽到达了左边的红色区域,你就输了。
这款游戏看起来很熟悉是吗?熟悉的读者可能会发现,它其实就是我之前介绍SpriteKit以及Cocos2D教程用到的游戏,不过与之不同的是,这里的游戏是用3D渲染的。当然,你并不一定能够真正地看到非常酷炫的3D效果,这款游戏使用的是上帝视角,所以对所有的polygon进行渲染总觉得浪费时间,所以,你现在可以发现为什么这款游戏非常适合做成VR了。
开始使用Cardboard
你需要做的第一件事就是为Unity下载Cardboard SDK。接下来,把它导入到你的项目中。从Unity的主菜单,选择Assets\Import Package\Custom Package,然后选择你刚刚下载的CardboardSDKForUnity.unitypackage。确保所有东西都被选中,反选Legacy文件夹,然后点击Import按钮。
为了让你的游戏作为一个VR体验,你需要用到一些技巧,在Project Browser中的Cardboard\Prefabs文件夹里,把CardboardMain Prefab拖拽到你的场景中,在Inspector中,给其赋予和你的忍者角色一样的位置(5.53,1.13,0.122),并且要进行90度Y Rotation。
你会发现的是,它比忍者的中心部位略高,这样可以展现出你在看他的眼睛。
接下来,选择主摄像头(Main Camera)并且在Inspector中反选,做raccoon忍者对象的时候也需要同样的操作。现在,把游戏在Unity编辑器中再次运行,你就会看到一些类似于3D场景的东西。如果你在移动鼠标的时候按住选择键,你的摄像头就会随着头部的运动进行旋转。
在iOS设备上运行你的游戏场景
在Unity编辑器中运行你的游戏是非常不错的,但最后一次检查的时候,用VR头盔配上电脑显示器看起来会让人很痛苦,所以我们需要适配到iPhone上。
选择File\Build Settings,iOS应该已经被选为你的默认平台,点击Click Player Settings然后转换到Inspector。
在Resolution and Presentation菜单下,把Default Orientation设置成Landscape Left。
在其他设置(Other Settings)中,把Bundle Identifier改成你的公司所需要的东西,比如com.(你的公司名).NinjaAttackVR。
把目标设备改为iPhone,把iPhone和电脑进行连接,选择Build和Run,然后给输出文件夹命名,这个名字你可以随意取。
这时候,Unity就会导出你的项目,然后它就会自动在Xcode中打开,如果没有打开,启动Xcode并且手动打开生成后的项目,运行然后在手机上尝试。首次运行游戏的时候,你需要一系列的设置过程,比如可以在Cardboard硬件上扫描二维码,这样Cardboard SDK就可以根据你的设备、距离等进行画质微调。
需要注意的是,如果设置过程中,你在扫描二维码的时候出现了 网址打开错误,那就必须调整Xcode项目中的info.plist,苹果开发者论坛中有说到这个问题,感兴趣的童鞋可以亲自查阅。
接着,把你的手机插入Cardboard当中,来回转头以调整摄像头视角,你就可以看到相对不错的3D画面了。
再一次把它做成游戏
能够看到你的游戏世界是非常不错的,但初次之外,你还需要把玩法加入到游戏中,特别是你需要从忍者面朝的方向扔出忍者之星,这是你将要做的第一个玩法。
对于UI来说,Cardboard支持一个按钮,看起来可能是比较有限,但如果把它和头部的动态追踪相结合的话,它可以做出更为复杂的互动。在《Ninja Attack》中,你通过Cardboard.SDK.VRModeEnable资源侦测玩家是否开始了VR模式,检查按钮是否和Cardboard.SDK.Triggered资源同时按下去了,如果这些值都对,就可以在用户面朝的方向扔出忍者之星。
打开你的NinjaStarLauncher.cs脚本,你会发现它在Inspector里是和GameLogic GameObject连在一起的。
创造一个新的private变量:
private Vector3 _vrShooterO
把它在Start() method中初始化:
_vrShooterOffset = new Vector3(0.0f, -0.4f, 1.0f);
用以下代码替换Update ():
这就可以运行了,接下来我们看看Update()是做什么的:
你首先检查游戏是否在VR模式,用户是否按下了按钮检查Cardboard.SDK singleton object上的资源。
在此之后,你可以调用LaunchNinjaStarFrom()释放一个忍者之星,你需要用到两个parameter:
第一个是GameObject头文件,Cardboard库会为你调出来,所以它应该是已经指向了正确的位置;第二个是轻微偏移,这样你面前的忍者之星就会看起来更真实,否则的话你扔出去的忍者之星就像是在四只眼之间进行运动,虽然看起来很cool,但给人的感觉很奇怪。
由于你的Ninja Star GameObject已经被设计飞往特定方向,所以它会朝着正确的方向进攻。
再试一次,这时候,你可以转头扔向坏人,输赢logic仍旧起作用。
解决Game Over菜单
你可能已经注意到了,当游戏结束的时候,用之前的Game Over按钮,你的角色仍旧是在屏幕的左边。这款游戏用到了Display Canvas来展示Game Over界面,Unity最新的GUI教程中有讲到这一点,它总是出现在游戏窗口的顶部。这个标签适用于大多数的游戏GUI,因为它可以自动适应到你屏幕的上方,不论你的摄像头在做什么,而且它可以非常不错地适应不同屏幕尺寸。
但在这个案例中,你需要一个存在于游戏世界中的GUI canvas,有一部分原因是它可以在3D环境中更好渲染,但还因为不希望把玩家爱是叫锁定到摄像头上。你的玩家们需要可以上下自由地看,这样他们可以看到不同的UI元素,找到最活跃的然后点击按钮。
创造一个新的Canvas
在Hierarchy菜单下选择GameOverCanvas,右击并且选择复制,重命名为VRGameOverCanvas,这样可以使它与原来的进行区别开来,把GameOverTxt重命名为VRGameOvertxt。
在VRGameOverCanvas组件中,把渲染模式改为World Space。
在Rect Transform组件中,把位置改为(-2.24,1.1,0.07),然后进行90度Y Rotation
最后,把X和Y Scale改为0.009,当所有一切完成的时候,VRGameOverCanvas看起来因该是这样的:
你可以在Game View视角下看到两个canvas是大致重叠的(当游戏不运行的时候):
这些值是哪里来的呢?坦白地说,我其实是调整到自己通过Cardboard摄像头看起来比较不错为止。有时候,编程更多的是一门艺术而不是学科。
支持两个Canvas
接下来,你需要更改GameController.cs,这样它才会发现两个Canvas打开和GameLogic GameObject脚本,它也是和GameLogic GameObject联系在一起的。把以下的两个公共变量加入到你的class里:
public Canvas VRGameOverC
public Text VRGameOverT
在resetGame()的开始加入如下代码:
VRGameOverCanvas.enabled =
用以下代码取代Gameover():
public void GameOver(bool didIWin) {
isGameOver =
_didIWin = didIW
string finalTxt = (_didIWin) ? “You won!” : “Too bad”;
if (Cardboard.SDK.VRModeEnabled) {
VRGameOverCanvas.enabled =
VRGameOverTxt.text = finalT
gameOverCanvas.enabled =
gameOverTxt.text = finalT
这个展示了正确的Canvas和Text对象,取决于你是否在VR模式(开启Cardboard.SDK.VRMode).
在你保存了脚本之后,你需要把正确的对象分配到新的公用变量。在Inspector里找到GameController,点击每个新变量旁边的目标,然后选择VRGameOverCanvas对象作为你的VR游戏Over Over Canvas变量,把VRGameOverTxt对象选为你的VR Game Over Txt变量。
需要注意的是,可能你会奇怪,为什么是很麻烦地支持两个Canvas而不是至改变现有的一个呢?原因是,你既需要支持上帝视角,还需要支持VR模式,所以一定要进行优化。
如果你准备现在就运行游戏,就可以发现VR模式里的游戏结束界面展示的很自然。你可以上下看界面的不同部分,现在所有缺少的东西就是再来一次的按钮。
增加Gaze输入方式
幸运的是,Unity内置了‘在使用world-space GUI Canvas的时候,摄像头中心点可以作为鼠标使用’,但你需要提供额外的脚本才能使它在VR界面中进行使用。
首先,扩展Cardboard Main\Head,找到主摄像头并把它重命名为VR Main Camera。选中VRGameOverCanvas对象,你们应该可以看到一个事件摄像头,点击Hierarchy里的EventSystem项目,点击增加组件按钮,并增加GazeInpute Module脚本。这个脚本可以确保Unity的GUI系统了解Cardboard摄像头的工作方式。
检查VR Mode Only,因为在VR模式下的时候,只需要这么运行就可以了。最后,点击你刚刚增加的Gaze Input Module Component,然后选择Move Up,重复一次,确保它可以出现在触屏输入和独立输入模式中,这可以确保Gaze Input Module在游戏进行的同时优先选择输入方式。当所有都做好的时候,它看起来应该是这样的:
现在,你就可以进行尝试了。这一次,当你把视角放到Play Again按钮的时候,它就会变绿,让你重新开始一场新的游戏。
或许你会发现这个版本的游戏在VR模式下玩起来有点难,这是因为你的视角是缩水的,所以在你看着错误的方向时,敌人很容易从你身边溜过去。而且,你无法迅速改变瞄准方向,你会因为脖子转速的限制而影响到游戏操作。你让玩家体验VR模式并不是为了惩罚他们,所以,你该如何调整呢?当然,可能会有人建议把敌人速度降低。
在Prefabs文件夹中选中EvilSlimeEnemy Prefab,然后打开EnemyMover.cs,把以下代码增加到Start(),随后设置速度:
这会让你的游戏在VR模式下变得更简单,所以玩家们不至于因为选择了VR模式就获得糟糕体验。
解决屏幕上的分数显示问题
你还需要解决的一个UI问题是屏幕上的分数,这个就需要不同的方式来处理了。虽然它仍然需要在VR模式中恰当的被显示出来,但你更希望它在你看任何方向的时候都固定在摄像头上。
选中Cardboard Main\Head,右击并选择UI\Canvas,重命名新的canvas为VRScoreCanvas,把渲染模式调整为World Space,为其赋予以下值:
位置(0,1,2.5)、宽度400、高度100、旋转(0,0,0)、Scale(0.5,1)。当完成之后,游戏看起来该是这样的:
看起来可能你的文本很奇怪地放在了屏幕中央,但在VR模式里,你能够看到的世界比正常情况下是少很多的,所以你在游戏中看到分数的时候应该是在边缘部位的,你可以自由进行位置调整,以使其适应你的手机。
接下来,使用文本对象展示你的分数,这个过程和Game Over的做法类似。
打开GameController.cs并增加一个新的公用变量:
public Text VRScoreT
接下来,你每次更新scoreTxt的时候都需要更新VRScoreTxt,在ResetGame() method中,把以下代码加在每次更新后的scoreTxt之后:
VRScoreTxt.text = “–“;
然后把这行代码增加到GotOne(),也放在更新scoreTxt的后面:
VRScoreTxt.text = “” + _currS
保存你的脚本,回到Unity,然后你会发现GameLogic当中的GameController Component如今可以输入VR Score Txt变量了,点击临近的目标然后选择你的VRScoreTxt文本对象。
再次体验你的游戏,现在,你就可以看到分数出现在左上角了,还可以允许你的头部进行运动。
VR模式的切换
由于你的游戏同时支持上帝视角和VR模式,你应该给用户自由切换的选择,UI做起来是很直观的,你只需要在上帝视角模式中加入一个简单的按钮,让玩家们来回切换模式即可。
首先,你需要增加切换的代码,选择Hierarchy里的GameLogic,点击增加组件,选择新脚本(New Script)然后把脚本命名为CardboardSwapper。
打开并用以下内容替换class代码:
这个class里最重要的method就是ActiveVRMode,它是用来激活Cardboard的VR模式的。其余的logic负责控制场景中的多个GameObject,取决于是否处于VR模式,你在上帝视角是看不到某些东西的。
你还可以发现的是,当你侦测后面按钮的时候调用了Switch(),这个功能非常适合测试。
你还需要为GameController脚本增加更多的logic,这样它才能在切换模式的时候展示或者隐藏一些东西,打开GameController.cs,把这个method加进去:
public void RefreshGameOver() {
gameOverCanvas.enabled =
VRGameOverCanvas.enabled =
if (isGameOver) {
GameOver(_didIWin);
保存一切然后重新回到Unity界面,选择GameLogic然后向下滚动到Cardboard Swapper组件,对于Cardboard Object数列,把它的大小赋值为1,然后放到场景中的CardboardMain GameObject中。这样不仅可以禁用你的Cardboard Head让你回到上帝视角摄像头模式,还可以禁用VRScoreCanvas。
对于Mono Object数列,把它的大小赋值为3,然后为你的场景选择Canvas、Main Camera和raccoon ninja,不要从Assets里选择。
最后你需要在上帝视角canvas为用户增加一个按钮,为了节约时间,我已经把它做好了,位于prefabs文件夹中。
从Assets\Prefabs中把CardboardButton推拽到Hierarchy,这样它就成为了你的Canvas对象的子对象,确保其位置设定是(-50,50,0):
在你的按钮对象底部,把它们连接起来,这样点击按钮的时候就可以调用CardboardSwapper.Switch() method,你可以从这个动画看看是如何做出来的:
再次尝试你的游戏,点击屏幕右下方的按钮切换至VR模式,然后单机Cardboard界面背后的按钮切换到上帝视角模式。做到这里,你的VR模式切换就已经完成了。
现在,你可以把Unity中的任何3D游戏做成VR游戏了,而且只需要一个Cardboard和一些塑料镜片,这是可以让所有人都能够体验的VR游戏。Android版本的做法和iOS大致相同,谷歌的Unity Developer指南还提供了更多的技术信息。最后,你甚至可以为你的VR游戏增加AR功能。
最后,你可以尝试Unity里所有的3D游戏,看是否能够顺利地做成VR体验,或者,这个教程也可以让你做出全新的VR游戏。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:271458次
积分:5275
积分:5275
排名:第4742名
原创:227篇
转载:218篇
评论:114条
文章:10篇
阅读:17762
阅读:6251
阅读:6047
推荐:以下都是博客老前辈.点击传送门.

我要回帖

更多关于 unity3d网页游戏 的文章

 

随机推荐