Unity Kinect 裸眼3D

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MyKinectController : MonoBehaviour {

    KinectManager manager;
    public Transform mainCam;
    Vector3 start_mainCamePos;
    Vector3 person_PosVector3;
    Vector3 person_RotVector3;
    [SerializeField]
    float threshold_Float = 1; // 高度阈值
	void Start () {
        if (KinectManager.Instance != null) manager = KinectManager.Instance;
        InitGameData();

    }
    void InitGameData() {
        start_mainCamePos = mainCam.localPosition;
    }
	void Update () {
        if (manager && manager.IsInitialized() && manager.IsUserDetected())
        {
            person_RotVector3 = manager.GetJointOrientation(manager.GetPrimaryUserID(), 3, true).eulerAngles; ;
            person_PosVector3 = manager.GetJointPosition(manager.GetPrimaryUserID(), 3);
            mainCam.localEulerAngles = new Vector3(person_RotVector3.x, person_RotVector3.y, mainCam.localEulerAngles.z);
            // 下面的值20 1.7 需要根据实际的场景调整
            mainCam.localPosition = new Vector3(mainCam.localPosition.x, 20 + (person_PosVector3.y-1.7f) * threshold_Float, mainCam.localPosition.z);
            Debug.Log(person_PosVector3.y);
        }
        else
        {
            ResetGameData();
        }
	}
    void ResetGameData() {
        mainCam.localPosition = start_mainCamePos;

    }
}

 根据人的视线控制Unity 场景Camera的坐标和旋转

猜你喜欢

转载自blog.csdn.net/qq_39097425/article/details/91863282