• 把自己的游戏修改成VR模式
  • Unity设置网络多人联机

今天在龙之梦酒店参加Unity的课程,把一些操作要点记录一点。首先,用到unity的示例项目:
VR迷宫项目示例:链接:http://pan.baidu.com/s/1bpfV9Jh 密码:r8hq
多人联机项目示例:链接:http://pan.baidu.com/s/1qYSUd1E 密码:viki

1.首先打开window版的MazeVRProject_Start项目(mac版自行当中选择)

2.打开sence文件夹中的场景,这是游戏最初的样子,模拟我们原来的游戏(非VR版)

3.我们先把Canvas打勾去掉,使其无效,因为后面也用不到

4.从Main Camera上移除脚本Camera FOV Manager, Camera Aim
Main Camera加上CameraEditorControl脚本,角度归0并调好位置

5.将Prefabs->VRPrefabs->Orientation Arrows拉到Camera Poiot Rig下,指定摄像头给OrientationArrow里的Camera栏位

6.Main Camera底下添加一个空物件VRControls,VRControls加入VRInput和VR Eye Raycaster脚本,将Main Camera拉入Raycast Origin属性,Exclusion Layers指定IgnoreRayCast

7.Player身上的Player Movement脚本里的Can Move要打勾,这只是为了方便测试看效果

8.给予地板VR Interactive Item脚本,为了跟使射线产生交互

9.在VRControls底下新建一个Canvas(VRCameraUI),改变Render Mode为World Space,坐标长宽修改为(0,0,0)(1,1),Reference Pixels Per Unit改为1,删除Graphic Raycaster元件

10.在VRCameraUI底下新增一个UI Image(Reticle),Source Image指定图与颜色,Material指定GUIOverlay,调适位置与长宽到画面中心,Reticle物件添加Reticle脚本

11.指定回VRControls物件里的Reticle栏位

12.Camera Pivot Rig物体底下添加一个Canvas(sceneUI),设定为World Space,坐标位置设定为(0,0,0)(1,1),Dynamic Pixels Pre Unit设为4,Reference Pixels Per Unit 设为1,SceneUI底下添加UI Image(Left Arrow),指定图片颜色与大小(1,1)后移到场景边缘位置(-3,5,13,-11 X转90度),加入Box Collider 与 VR Interactive Item脚本

13.复制右边箭头(x改为正值,ScaleX改负值)

14.Camera Pivot Rig物件加入VR Camera Rotation脚本,脚本指定这两个箭头

15.SceneUI加入VR Prefabs里的VRinformationUI,VRinformationUI底下加入一个UI Sider,调整到适当位置,取消打勾Interactable,Transition设定为None,删除Slider底下的Handle Slide Area,Background颜色改黑色,Archor presets改为全屏,Fill全归0指定对齐左边,Slide底下添加UI Text Archor presets改为全屏与居中,输入文字

16.Slider加入Box Collider, Audio Source, VR Interactive Item,Selection Slider四个组件,Box Collider调整好位置,Audio Source关闭Play on awake, Selection Slider脚本指定:Audio->Slider, On Over Clip->MenuGazeOver,On Filled Clip->MenuSelect, InteractiveItem->Slider, Disable On Bar Fill关闭,将Player原本的Can Move取消掉

17.VRInformationUI添加一个Canvas Group元件和UIFader脚本(Start Visible 1)Slider里面的On Bar Filled事件添加Player->PlayMovement.Mobilize()和VR
ImformationUI->UIFader.StartFadeout

18.ctrl+d 复制另外一个VRInformationUI(VRGameOverText),Enable方块取消打勾,Title Text文字删除,Body Text文字改为Game Over, Slider里的文字改Play Again!

19.指定VRGameOverText给Player里的Restart Dialog栏位,Slider的On Bar Filled指定Player->PlayerState.Reload(float)=1

20.将Countdown Timer放入SceneUI, 并加入Countdown Timer,UI Fader脚本,指定颜色

21.VRInformationUI底下的Slider加入两个事件,CountdownTimer->UIFader.StartFadeIn(),CountdownTimer->CountdownTimer.BeginCountdown()

22.导入CardboardSDKForUnity.unitypackage,然后在Main Camera上赋予Stereo Controller脚本,这样就产生了双眼效果


23.现在我们学习下unity使用自带的控件来进行联机开发,首先导入多人联机项目,打开项目中的Start场景,我们添加一个空物体(network),然后添加Network Manager和Network Manager HUD组件,这样就可以看到联网的UI了

24.Tank需要添加Network Identity组件,相当于在网络连接中有自己的“身份证”

25.我们create空物体(spaw),添加NetworkStartPosition,这样就设置了物体的出生点

26.NetworkManager中的Player Prefab中拖入Tank预设,这样每次接入服务器都会产生Tank物体

27.这时会发现移动坦克时,另一个客户端接入的坦克也会同时移动,为了解决这样的问题,把ObjectMoverRB脚本组件替换为ObjectMoverRB_Net

28.在NetworkIdentify中的localPlayerAuthority打勾

29.我们再在Tank预设中添加NetworkTransform组件,其中Rotation Axis设置为Y(Top-Down 2D),因为坦克只绕Y轴方向上旋转,其他方向不存在旋转,所以这样设置保证最少的网络传输需求

30.客户端一连接上,服务端的镜头就突然变了为了解决这个问题,这是主要的代码

31.射击也有类似的问题,会同时发射子弹,需要以下代码解决,[Command]命令的方法名必须以Cmd开头

32.自然上述代码是需要把CannonSpawnController脚本组件修改为CannonSpawnController_Net

33.cannon也需要添加“联网身份证”NetworkIdentity和NetworkTransform

34.产生的物体需要在NetworkManager里注册

35.cannon里添加CannonballController组件,can kill打勾就能降低坦克的血量了

36.CannonballController中的update是[ServerCallback]同步子弹的生命周期

37.还记得修改Tank的Tag为Player

38.Tank添加TankHealth,设置坦克的生命值

39.胜利或失败后,显示提示文字信息,使用客户端RPC,BackToLobby返回大厅在中国还无法实现,在美国已经实现beta版,也就是unity提供一个游戏大厅方便开发者开发联网游戏

VR Masterclass相关推荐

  1. 【获奖公布】走进VR开发世界——我们离开发一款VR大作还有多远?

    此次征文比赛以分享VR开发经验为核心,在对所有参赛文章进行审核后,以"开发"为先,评选出一.二.三等奖,共9名. 获奖名单 奖项 文章 作者 评语 一等奖 <VR游戏交互开发 ...

  2. 如何把手变成手控_在这个模拟手的VR游戏里,你能体验到很多手控福利

    原标题:在这个模拟手的VR游戏里,你能体验到很多手控福利 前排提示,部分图片可能导致掉San. 如今的电子游戏越来越真实,但始终存在一个局限,那就是玩家通常使用手柄.键鼠等外设来控制角色,没法与游戏实 ...

  3. ml不是内部或外部命令_美国飞机制造商波音公司采用VR技术训练宇航员 ; Snap Lens Studio推出支持自定义ML驱动的Snapchat镜头...

    看日报是个好习惯!  Valve宣布为Steam开发者推出OpenXR预览版本,支持跨平台VR/AR内容开发  Valve在为Steam游戏开发人员迎接OpenXR面世的准备方面迈出了重要的一步,开发 ...

  4. 头戴式AR/VR 光学标定

    文章:A Survey of Calibration Methods for Optical See-Through Head-Mounted Displays 作者:Jens Grubert , Y ...

  5. Unity三维游戏开发C#编程大师班 Masterclass In C# Programing Unity 3D Game Development FPS

    本课程采用现代游戏开发(Unity 2021)的最新内容和最新技术 学习任何东西的最好方法是以一种真正有趣的方式去做,这就是这门课程的来源.如果你想了解你看到的这些不可思议的游戏是如何制作的,没有比这 ...

  6. “5G杀手级应用”Cloud VR 华为如何打响5G第一枪

    雷锋网消息,近日华为在上海召开华为云 5G Cloud VR服务发布会暨5G Cloud VR开发者沙龙,Cloud VR有何潜力成为5G第一批杀手级应用,华为又在其中扮演怎样的角色. Cloud V ...

  7. 当代艺术遇上虚拟现实:幻境视界打造基业VR美术馆

    VR展览也许并不少,但专业的艺术展却难得一见.幻境世界周志强希望能借助VR技术,实现"一地办展.全球同展.永不闭馆",更好地传播当代艺术. 从米开朗琪罗到库尔贝,再到雷诺阿,大师们 ...

  8. 《火星救援VR》原班人马打造全新AR游戏,让可爱小飞龙伴随你左右

    曾开发了<火星救援>的VR团队即将发布AR游戏<Follow Me Dragon>,让可爱小飞龙"融入"真实世界. 开发商The Virtual Reali ...

  9. Mozilla开源了VR框架A-Frame

    Mozilla创建并开源了A-Frame,这是一个用于在桌面浏览器.智能手机和Oculus Rift上创建VR场景的框架. \\ A-Frame是一个在浏览器中创建VR体验的开源框架.该框架由Mozi ...

  10. gitter 卸载_最佳Gitter频道:VR和AR

    gitter 卸载 by Gitter 通过吉特 最佳Gitter频道:VR和AR (Best Gitter channels on: VR & AR) Virtual reality is ...

最新文章

  1. Axure RP使用攻略--入门级(七)之axure元件使用思路的补充
  2. 【bzoj4408】[Fjoi 2016]神秘数 主席树
  3. asp.net源码收集
  4. 腾讯微信支付支持全量商家小程序场景开通云闪付功能
  5. kylin: build cube Hbase: Region Server 意外退出
  6. ctreectrl 设置选中_CTreeCtrl点击获得选中项
  7. 6 日期字符串转日期_日期居然用字符串保存?我笑了
  8. 2021永州高中高考成绩查询入口,邵阳高考成绩查询入口2021
  9. 计算机里面保留游戏账号名字的是什么文件夹,租号玩系统文件已损坏-电脑安装游戏老是显示文件已损坏...
  10. OpenJudge NOI题库 入门 116题 (一)
  11. 全国区号码表(绝对全)
  12. 外贸常用术语_对外贸易常用的贸易术语有几种?分别是,,,
  13. 研究生阶段如何学习、做研究(超棒)
  14. 破解PDF打开密码、复制限制
  15. [引擎搭建记录] 时间性抗锯齿(TAA)
  16. 1一9数字行书写法_数字1-9的标准写法-1~9的书写格式
  17. 服务器mysql修改数据库密码_怎么修改mysql数据库服务器密码
  18. 英国将强制互联网公司遏制外国政府发布假信息,违法者或被罚款数十亿美元...
  19. 新概念炒冷饭——操作符进阶详解
  20. [转载] 蒲慕明写给学生的信

热门文章

  1. LINK : fatal error LNK1561和LINK : fatal error LNK1168:解决方法
  2. HDL4SE:软件工程师学习Verilog语言(十三)
  3. HL7 2.6解析转XML(C#版)
  4. 怎么获取自定义核算项目里某一个类型的数据:做f7
  5. C语言程序出现malloc(): corrupted top size异常中止
  6. ZOJ 3987 秦皇岛现场赛G题 java
  7. A + B Problem Too
  8. javaScript入门,新手小白也能会
  9. linux recovery模式是什么,recovery.img是什么
  10. matlab 相机焦距,matlab – 给定焦距和摄像机位置/旋转的正确透视图像