VR Masterclass
来源:互联网 发布:卖家淘宝差评回复大全 编辑:程序博客网 时间:2024/04/27 15:20
- 把自己的游戏修改成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
- Photography Masterclass
- Paleo In A Kitchen: Caveman Cooking Masterclass
- VR
- VR
- vr
- VR
- vr
- VR
- vr
- VR
- vr
- VR
- 【VR】VR中的交互
- VR开发 VR development
- VR学习第九节:VR+旅游 VR+房地产
- VR战警秘技
- VR指标
- 模数转换(A/D)与数模转换(D/A)
- HTTP状态码
- MIML界面设计(一)_首页
- 读书是一件很奢侈的事
- C++ 语法实验室之const_cast,static_cast,dynamic_cast
- VR Masterclass
- java中的List结构的集合类
- hdu 3183 A Magic Lamp(ST表)
- Android常用UI之Notification
- SSH开发环境整合搭建
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?
- android之Serializable
- Unity 设置Android SDK path
- 笔试题:腾讯基础研究方向