欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pico neo2 通过unity制作简单的手柄控制游戏

程序员文章站 2022-07-14 11:32:26
...

一、unity环境搭建
1、打开unity,新建工程,在File中选择Build Settings,如下图所示pico neo2 通过unity制作简单的手柄控制游戏
在Build Settings中选择Android,然后点击Switch Platform。再进行项目设置,点击Player Settings,在Other Settings中进行如下设置pico neo2 通过unity制作简单的手柄控制游戏
修改包名(Package Name),将Minimum API Level和Target API Level修改成与Android studio 中的版本一致,pico neo2 应选择API在24以上。 在Edit中选择Preference,修改Android SDK和JDK,这里应与Android studio 中一致。pico neo2 通过unity制作简单的手柄控制游戏

2、按照pico官网进行相应的配置
这一步也可以在导入SDK包弹出的Setting中选择Applied。
3、导入Pico的SDK包
SDK包导入成功后,将Pvr_unity SDK 中的Prefabs拖拽到Hierarchy中,然后删除原有的Main Camera;选择Pvr_Controller的Prefabs,将ControllerManger拖拽到Hierarchy的Pvr_unity SDK 中,这里面包含了手柄控制,若需要头盔控制,可以在demo中复制一个HeadControl到Pvr_unity SDK 中。pico neo2 通过unity制作简单的手柄控制游戏
4、开始“玩”
在Asset Stroe中Import一个Standard Assets,在Scene中导入一个小人,并构建一个地面,很简单的一个画面完成,开始写相应的我控制程序。

首先,将Pvr_Controller Demo(SDK自带的脚本)挂载到ControllerManger中,用来获取控制信息。然后再开始写自己的通过手柄的trigger键来控制小人运动,控制要求:通过手柄的trigger键点击所构建的地面上的任意一个位置,小人就会跑到那个位置。程序如下:

using UnityEngine;
using Pvr_UnitySDKAPI;

public class move : MonoBehaviour
{
    public static Pvr_KeyCode TOUCHPAD = Pvr_KeyCode.TOUCHPAD;
    public static Pvr_KeyCode TRIGGER = Pvr_KeyCode.TRIGGER;
    public GameObject currentController;
    private Ray ray;
    private Vector3 currentHitPoint = Vector3.zero;
    public GameObject PointGo;
    public GameObject CurrentController
    {
        get
        {
            if (currentController == null)
                currentController = FindObjectOfType<Pvr_ControllerDemo>().currentController;
            return currentController;
        }
    }

    // Start is called before the first frame update
    void Start()
    {
        ray = new Ray();
    }

    // Update is called once per frame
    void Update()
    {
        if (CurrentController != null && GetTeleportKey())
        {
            MoveTo();
        }
    }

    public void MoveTo()
    {
        ray.direction = CurrentController.transform.Find("dot").position - CurrentController.transform.Find("start").position;
        //Debug.Log("方向" + ray.direction);
        ray.origin = CurrentController.transform.Find("start").position;
        //Debug.Log("位置" + ray.origin);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
        {
            currentHitPoint = hit.point;
            if (HitFloor(ref hit) && hit.point != null)
            {
                PointGo.transform.position = hit.point;
                PointGo.SetActive(true);
            }
        }
        else { PointGo.SetActive(false); }
    }
    private static bool GetTeleportKey()
    {
        return Controller.UPvr_GetKey(0, TOUCHPAD) ||
            Controller.UPvr_GetKey(1, TOUCHPAD) ||
            Controller.UPvr_GetKey(0, TRIGGER) ||
            Controller.UPvr_GetKey(1, TRIGGER) ||
            Input.GetMouseButton(0);
    }
    private bool HitFloor(ref RaycastHit hit) //点击
    {
        return 1 << hit.transform.gameObject.layer == LayerMask.GetMask("TransparentFX");
    }
}

我所做的小人没有跑的动作,若想让小人拥有跑的动作可以设置它的Animator。
5、导出到VR中
可以通过USB线,也可以通过无线传送的方式,我选择的时USB。
Neo2中的设置:打开设置->更多->系统->联系点击"PUI"版本条目7-9次->返回系统页,可以看到开发者选项,然后在开发者选项列表中开启USB调试功能。

在Build Setting 中将要导入的场景拖拽到Scense In Build中,也可以点击Add Open Scenes进行选择。在Run Device中选择自己的设备,勾选Development Profiler和Script Debugging这样就可以在console中debug出相应的信息。pico neo2 通过unity制作简单的手柄控制游戏
然后Build And Run 就可以了。

相关标签: unity vr