3D对象交互
下载资源包:MRTK.HoloLens2.Unity.Tutorials.Assets.GettingStarted.2.3.0.3.unitypackage
按照之前教程中的方法把资源包导入项目;
项目中对象可以在Hierarchy面板中,对象的前面有个小眼睛,点击一下会隐藏
创建对象集合
1、在Hierarchy中创建一个空对象,命名为3DObjectCollection,坐标设置为x=0,y=-0.2,z=2;
2、在Assets中,Assets>MRTK.Tutorials.GettingStarted>Prefabs;
3、会看到有Cheese、CoffeeCup、EarthCore、Octa、Platonic、TheModule六个预制体,全选,然后拖到3DObjectCollection中,设置为3DObjectCollection的子集;
4、在Hierarchy中创建三个Cube,尺寸全部修改为0.15;
5、为3DObjectCollection添加GridObjectCollection脚本,并将SortType修改为ChildOrder,然后点击UpdateCollection更新集合;
6、为上面创建的三个Cube添加不同颜色的材质球,资源包中的材质球位置为:Assets>MixedRealityToolkit.SDK>StandardAssets>Materials,选中材质球拖到Cube上即可;
7、官方文档中给出的的材质球为:MRTK_Standard_GlowingCyan,MRTK_Standard_GlowingOrange,MRTK_Standard_Green。材质球可自行选择。
添加操作脚本
1、全选3DObjectCollection下的子对象,在Inspector中点击AddComponent,搜索ManipulationHandler,添加此脚本;
2、Cube对象不做处理;
3、选中Cube1对象,将TwoHandedManipulation改为Scale,此操作为更改用对象大小;
4、选中Cube2对象,将Constrains下的ConstraintOnMovement修改为FixDistanceFromHead,此操作为移动对象时与用户保持相同距离;
5、Cheese、CoffeCup、EarthCore对象不做处理;
6、选中Octa对象,取消勾选AllowFarManipulation,此操作为取消远程操作,用户不可以通过辅助线来操作该对象;
7、选中Platonic对象,把OneHandRotationModeNear和OneHandRotationModeFar都修改为RotateAboutObjectCenter,此操作为旋转对象时,对象围绕自身中心旋转;
8、选中TheModule对象,在Inspector中添加RegidBody脚本,然后取消勾选重力引擎UseGravity;此操作为为对象添加物理引擎(刚体),但是取消掉重力引擎;
9、选中EarthCore对象,在Inspector中添加BoundingBox脚本,此操作为为对象添加一个边界框,用来操作该对象;
10、运行,查看效果;
添加触摸效果
1、选中Octa对象,在Inspector中添加AudioSource脚本,把SpatialBlend修改为1,用来启用空间音频;
2、继续为Octa对象添加NearInteractiontouchable脚本,然后点击FixBounds和FixCenter,用来修正触摸边界属性,此脚本为近距离可触摸脚本;
3、继续为Octa添加一个HandInteractionTouch脚本,此脚本为手动交互触摸脚本;
4、在HandInteractionTouch脚本的OnTouchStarted地方,点击“+”号新建一个事件,将Octa对象拖入此事件中;
5、继续在这个地方的后面的下拉选项中,选择AudioSource>PlayOneShot(AudioClip),然后再下面选择声音资源;
6、官方资源包的音频资源位置为:Assets>MixedRealityToolkit.SDK>StandardAssets>Audio,官方文档选择的是MRTK_Gem音频;
7、运行查看效果,远程触碰无效,需要触手触碰到八面体的时候才会播放音乐并且出现变色效果;
本节结束
官方链接:https://docs.microsoft.com/zh-cn/windows/mixed-reality/mrlearning-base-ch4