프로젝트

일반

사용자정보

통계
| 개정판:

t1 / TFDContents / Assets / KinectScripts / Samples / FollowUserRotation.cs @ 3

이력 | 보기 | 이력해설 | 다운로드 (1.26 KB)

1
using UnityEngine;
2
using System.Collections;
3

    
4
public class FollowUserRotation : MonoBehaviour 
5
{
6
	[Tooltip("Index of the player, tracked by this component. 0 means the 1st player, 1 - the 2nd one, 2 - the 3rd one, etc.")]
7
	public int playerIndex = 0;
8

    
9
	void Update () 
10
	{
11
		KinectManager manager = KinectManager.Instance;
12

    
13
		if(manager && manager.IsInitialized())
14
		{
15
			if(manager.IsUserDetected(playerIndex))
16
			{
17
				long userId = manager.GetUserIdByIndex(playerIndex);
18

    
19
				if(manager.IsJointTracked(userId, (int)KinectInterop.JointType.ShoulderLeft) &&
20
				   manager.IsJointTracked(userId, (int)KinectInterop.JointType.ShoulderRight))
21
				{
22
					Vector3 posLeftShoulder = manager.GetJointPosition(userId, (int)KinectInterop.JointType.ShoulderLeft);
23
					Vector3 posRightShoulder = manager.GetJointPosition(userId, (int)KinectInterop.JointType.ShoulderRight);
24

    
25
					posLeftShoulder.z = -posLeftShoulder.z;
26
					posRightShoulder.z = -posRightShoulder.z;
27

    
28
					Vector3 dirLeftRight = posRightShoulder - posLeftShoulder;
29
					dirLeftRight -= Vector3.Project(dirLeftRight, Vector3.up);
30

    
31
					Quaternion rotationShoulders = Quaternion.FromToRotation(Vector3.right, dirLeftRight);
32

    
33
					transform.rotation = rotationShoulders;
34
				}
35
			}
36
		}
37
	}
38
}