示例#1
0
    void UpdatePose()
    {
        var pose = NoloVR_Controller.GetDevice(deviceType).GetPose();

        if (deviceType == NoloDeviceType.Hmd)
        {
            if (vrCamera == null)
            {
                Debug.LogError("Not find your vr camera");
                transform.localPosition = pose.pos;
                return;
            }
            //Correct the camera yaw
            noloyaw   = pose.rot.eulerAngles.y;
            resetyaw  = noloyaw - camerayaw > 0 ? noloyaw - camerayaw : noloyaw - camerayaw + 360;
            presetyaw = transform.localRotation.eulerAngles.y;
            resultyaw = resetyaw - presetyaw;
            transform.localRotation = NoloVR_Utils.GetRecenterRot(pose.rot, presetyaw, resultyaw);

            //Correct the camera position
            camerayaw = vrCamera.transform.localRotation.eulerAngles.y;
            var cameraLoaclPosition = transform.localRotation * vrCamera.transform.localPosition;
            transform.localPosition = pose.pos - cameraLoaclPosition;
        }
        else
        {
            transform.localPosition = pose.pos;
            transform.localRotation = pose.rot;
        }
    }
    void Awake()
    {
        instance = this;
        objects  = GameObject.FindObjectsOfType <NoloVR_TrackedDevice>();
        GameObject androidCallBack = new GameObject("USB Host Peripherals");

        androidCallBack.AddComponent <NoloVR_AndroidCallBack>();
        NoloVR_Playform.InitPlayform().SetHmdTrackingCenter(NoloVR_Utils.GetHmdTrackingCenter(vrPlayform));
        NoloVR_Controller.Listen();
    }