Pico SDK在Unity中如何控制移动

简介: Unity导入Pico SDK后如何进行实际开发呢?想必大家都很好奇。从去年的省赛到今年的国赛, 本人研究Pico有快一年了,刚开始学习的时候自己翻过很多的博主文章,都没有找到自己想要的知识,从那时起,我便下定决心,等国赛过后 自己要写写虚拟设备的使用了,那就以我的视角来为大家讲解Pico SDK的正确使用。

今天主要讲的内容是Pico SDK在Unity中第一人称视角的移动方式


下图是已经将Pico SDK导入到了Unity3D中了

image.png



1. 删除Unity自带的Camera摄像机,找到Pvr_UnitySDK子文件夹Prefabs,将Prefabs文件夹下的        Pvr_UnitySDK预制体拖入到场景中,那么摄像头做好了。

image.png



2. 找到Pvr_Controller文件夹下的ControllerManager预制体放入到场景中,成为Pvr_UnitySDK的 子物体,与Pvr_UnitySDK中的Head同级。Pvr_UnitySDK指的是头显,Head指的是玩家的头 部,ControllerMannager指的是手柄控制器,PvrController0为左手柄,PvrController1为右手柄。

image.png



3. 找到Pvr_Controller文件夹下的Scenes文件夹,打开Scenes文件夹中的Pvr_Controller_Demo场景,找到Pvr_UnitySDK的子物体HeadControl,放入Assets目录中,再回到之前的场景,步骤如下图所示


image.png


4.将Assets目录下的HeadControl放入到Pvr_UnitySDK中,与Head,ControllerManager同级,效果图如下

image.png



5.在Event组件中添加脚本Pvr_Input Module(Script),此脚本是PicoSDK自带的,直接添加即可 ,Pvr_Input_Module脚本中有个Confirm Btn选项,这里可以选择玩家与UI交互的事件按钮,默认是选择TouchPad,即手柄的黑色圆角按钮;


image.png


6.ControllerManager组件中添加脚本Pvr_Controller Demo(Script),Pvr_Controller Demo(Script)脚本是PicoSDK文件夹自带的,直接添加即可;

image.png



7.打开ControllerManager组件中的Pvr_Controller Demo(Script)的脚本,在脚本上添加射线点击移动方法,添加的代码如图所示

image.png

image.png



如图所示,添加的射线检测移动代码就完成了,代码如下:


  //增加

   public Transform person;//移动的人物

   public string moveLayer;//可移动的层级

   public LineRenderer rayLine_zengjia;//手柄下的ray_LengthAdaptive;


//新增加


if (1 << hit.transform.gameObject.layer == LayerMask.GetMask(moveLayer))

{

           rayLine_zengjia.material.color = Color.green;//当可移动的时候射线变为绿色

                     if    (  Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TRIGGER) ||                                                          Controller.UPvr_GetKeyDown(1, Pvr_KeyCode.TRIGGER) ||                                                          Input.GetMouseButtonDown(0)   )

                       {

                           person.position = new Vector3(hit.point.x, person.position.y, hit.point.z);

                       }

}

                   else

                   {

                       rayLine_zengjia.material.color = Color.red;//当不可移动的时候射线变为红色

                   

                   }


8.在ControllerManager组件上进行如下操作,步骤图与效果图如下


image.png


9.创建地面,我这里是创建了一个3D物体Cube,设置Cube物体的Layer属性,将Layer属性设为moveLayer,表示这是可移动的层级,步骤如下

image.png



10,到此,PicoSDK在Unity3D中完成了第一人称漫游,当扣动手柄扳机后,手柄射线指向处,就是第一人称玩家移动的目标点。


11.   Alt+鼠标左键  就是  Pico的扳机键,


       后续我也会给大家讲一下Pico的另一种移动方式


       有对Pico感兴趣的可以看我的其他文章


相关文章
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
151 0
|
2月前
|
Android SDK
【10月更文挑战第21天】
124 1
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
77 7
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
214 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
507 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等