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的坐标和旋转