// Update is called once per frame void Update() { if (manager == null) { manager = KinectManager.Instance; } // get the users texture if (manager && manager.IsInitialized()) { //foregroundTex = manager.GetUsersLblTex(); if (backgroundImage && (backgroundImage.sprite == null)) { //backgroundImage.texture = manager.GetUsersClrTex(); backgroundImage.sprite = Sprite.Create(manager.GetUsersClrTex(), new Rect(0, 0, manager.GetUsersClrTex().width, manager.GetUsersClrTex().height), Vector2.zero); backgroundImage.rectTransform.sizeDelta = new Vector2(manager.GetUsersClrTex().width, manager.GetUsersClrTex().height); } } if (manager.IsUserDetected()) { uint[] userId = new uint[2] { manager.GetPlayer1ID(), manager.GetPlayer2ID() }; // update colliders int numColliders = (int)KinectWrapper.NuiSkeletonPositionIndex.Count; for (int j = 0; j < 2; j++) { for (int i = 0; i < numColliders; i++) { if (manager.IsJointTracked(userId[j], i)) { Vector3 posJoint = manager.GetRawSkeletonJointPos(userId[j], i); if (posJoint != Vector3.zero) { // convert the joint 3d position to depth 2d coordinates Vector2 posDepth = manager.GetDepthMapPosForJointPos(posJoint); float scaledX = posDepth.x * foregroundRect.width / KinectWrapper.Constants.DepthImageWidth; float scaledY = posDepth.y * -foregroundRect.height / KinectWrapper.Constants.DepthImageHeight; float screenX = foregroundOfs.x + scaledX; float screenY = Camera.main.pixelHeight - (foregroundOfs.y + scaledY); float zDistance = posJoint.z - Camera.main.transform.position.z; Vector3 posScreen = new Vector3(screenX, screenY, zDistance); Vector3 posCollider = Camera.main.ScreenToWorldPoint(posScreen); jointColliders[i + j * numColliders].transform.position = posCollider; } } } } } }
// Make the defenders jump on the server side. public void Jump(uint userId, int usersCount) { KinectManager Manager = KinectManager.Instance; uint user1Id = Manager.GetPlayer1ID(); uint user2Id = Manager.GetPlayer2ID(); if (usersCount == 2) { if (userId == user1Id) { if (networkObject == null) { for (int i = 0; i < 2; i++) { defendersOffline[i].GetComponent <DefenderMovement>().Jump(); } } else { for (int i = 0; i < 2; i++) { defenders[i].gameObject.GetComponent <DefenderMovement>().Jump(); } } } else { if (networkObject == null) { for (int i = 2; i < 4; i++) { defendersOffline[i].GetComponent <DefenderMovement>().Jump(); } } else { for (int i = 2; i < 4; i++) { defenders[i].gameObject.GetComponent <DefenderMovement>().Jump(); } } } } else { foreach (DefenderBehavior d in defenders) { d.gameObject.GetComponent <DefenderMovement>().Jump(); } foreach (GameObject d in defendersOffline) { d.GetComponent <DefenderMovement>().Jump(); } } }
void DepthPlacement() { KinectManager manager = KinectManager.Instance; if (musicInterface && manager && manager.IsInitialized() && manager.IsUserDetected()) { uint userId2 = manager.GetPlayer2ID(); Vector3 posUser = manager.GetUserPosition(userId2); zPos = posUser.z; } }
private void WaitForPlayers() { uint P1ID = manager.GetPlayer1ID(); uint P2ID = manager.GetPlayer2ID(); if (P1ID != 0 && P2ID != 0) { _state = GameStateEn.Starting; } else { Debug.Log("Waiting for Players"); } }
void Update() { Vector3 dirJoints = Vector3.zero; RotationAxis = new Vector3(RotationAxisSource.position.x, RotationAxisSource.position.y, RotationAxisSource.position.z); if (player == "Player1") { dirJoints = kinectManager.GetDirectionBetweenJoints(kinectManager.GetPlayer1ID(), 1, 2, false, false); } else if (player == "Player2") { dirJoints = kinectManager.GetDirectionBetweenJoints(kinectManager.GetPlayer2ID(), 1, 2, false, false); } float roll = dirJoints.x * 100; transform.RotateAround(RotationAxis, Vector3.left, roll * Time.deltaTime / 2); float pitch = dirJoints.z * -100; transform.RotateAround(RotationAxis, Vector3.forward, pitch * Time.deltaTime / 2); transform.position = new Vector3(transform.position.x + roll * .001f, transform.position.y, transform.position.z - pitch * .001f); //print ("dirJoints " + dirJoints); //= Quaternion.Lerp (transform.rotation, newRotation, Time.deltaTime/2); }
void Update() { foregroundRect = new Rect(foregroundOfs.x, foregroundOfs.y, Screen.width, -Screen.height / divider); if (manager == null) { manager = KinectManager.Instance; } // get the users texture if (manager && manager.IsInitialized()) { //foregroundTex = manager.GetUsersLblTex(); if (backgroundImage && (backgroundImage.texture == null)) { backgroundImage.texture = manager.GetUsersClrTex(); } } if (manager.IsUserDetected()) { uint userId = manager.GetPlayer1ID(); //Player 2 userId2 = manager.GetPlayer2ID(); print(userId); print(userId2); // update colliders int numColliders = (int)KinectWrapper.NuiSkeletonPositionIndex.Count; for (int i = 0; i < numColliders; i++) { if (manager.IsJointTracked(userId, i)) { Vector3 posJoint = manager.GetRawSkeletonJointPos(userId, i); if (posJoint != Vector3.zero) { // convert the joint 3d position to depth 2d coordinates Vector2 posDepth = manager.GetDepthMapPosForJointPos(posJoint); float scaledX = posDepth.x * foregroundRect.width / KinectWrapper.Constants.DepthImageWidth; float scaledY = posDepth.y * -foregroundRect.height / KinectWrapper.Constants.DepthImageHeight; float screenX = foregroundOfs.x + scaledX; float screenY = Camera.main.pixelHeight - (foregroundOfs.y + scaledY); float zDistance = posJoint.z - Camera.main.transform.position.z; Vector3 posScreen = new Vector3(screenX, screenY, zDistance); Vector3 posCollider = Camera.main.ScreenToWorldPoint(posScreen); jointColliders[i].transform.position = posCollider; } } //player 2 if (manager.IsJointTracked(userId2, i)) { Vector3 posJoint = manager.GetRawSkeletonJointPos(userId2, i); if (posJoint != Vector3.zero) { // convert the joint 3d position to depth 2d coordinates Vector2 posDepth = manager.GetDepthMapPosForJointPos(posJoint); float scaledX = posDepth.x * foregroundRect.width / KinectWrapper.Constants.DepthImageWidth; float scaledY = posDepth.y * -foregroundRect.height / KinectWrapper.Constants.DepthImageHeight; float screenX = foregroundOfs.x + scaledX; float screenY = Camera.main.pixelHeight - (foregroundOfs.y + scaledY); float zDistance = posJoint.z - Camera.main.transform.position.z; Vector3 posScreen = new Vector3(screenX, screenY, zDistance); Vector3 posCollider = Camera.main.ScreenToWorldPoint(posScreen); jointColliders2[i].transform.position = posCollider; } } } } }
public override void Process() { if (manager && manager.IsInitialized()) { if (manager.IsUserDetected()) { uint userId = manager.GetPlayer1ID(); uint user2Id = manager.GetPlayer2ID(); if (manager.IsJointTracked(userId, (int)joint)) { // output the joint position for easy tracking Vector3 jointPos = manager.GetJointPosition(userId, (int)joint); HandPosition.x = accX * (jointPos.x * Screen.width) + decXP1; HandPosition.y = accY * (jointPos.y * Screen.height) + decY; HandPosition.z = 743; //Debug.Log("HandTracking, x: " + jointPos.x.ToString() + "y :" + jointPos.y.ToString()); cursor1.gameObject.transform.position = HandPosition; PointerEventData lookData = GetLookPointerEventData(HandPosition); eventSystem.SetSelectedGameObject(null); if (lookData.pointerCurrentRaycast.gameObject != null) { selectedObjOld = selectedObj; selectedObj = lookData.pointerCurrentRaycast.gameObject; Debug.Log("Object selected : " + selectedObj.name); //ExecuteEvents.ExecuteHierarchy(selectedObj, lookData, ExecuteEvents.submitHandler); //ExecuteEvents.ExecuteHierarchy(go, lookData, ExecuteEvents.pointerUpHandler); } if (selectedObjOld == selectedObj) { if (staticTime + Time.deltaTime < selectTime) { staticTime += Time.deltaTime; } else { lookData = GetLookPointerEventData(HandPosition); eventSystem.SetSelectedGameObject(null); if (lookData.pointerCurrentRaycast.gameObject != null) { selectedObjOld = selectedObj; selectedObj = lookData.pointerCurrentRaycast.gameObject; Debug.Log("Object selected : " + selectedObj.GetType()); ExecuteEvents.ExecuteHierarchy(selectedObj, lookData, ExecuteEvents.submitHandler); //ExecuteEvents.ExecuteHierarchy(go, lookData, ExecuteEvents.pointerUpHandler); } }// TODO: Add SwipeUp and Down support : test selectedObj for slider } else { staticTime = 0; } } if (user2Id != 0) { if (manager.IsJointTracked(user2Id, (int)joint)) { // output the joint position for easy tracking Vector3 jointPos = manager.GetJointPosition(user2Id, (int)joint); HandPosition2.x = accX * (jointPos.x * Screen.width) + decXP2; HandPosition2.y = accY * (jointPos.y * Screen.height) + decY; HandPosition2.z = 743; //Debug.Log("HandTracking, x: " + jointPos.x.ToString() + "y :" + jointPos.y.ToString()); cursor2.gameObject.transform.position = HandPosition2; PointerEventData lookData = GetLookPointerEventData(HandPosition2); eventSystem.SetSelectedGameObject(null); if (lookData.pointerCurrentRaycast.gameObject != null) { selectedObjOld2 = selectedObj2; selectedObj2 = lookData.pointerCurrentRaycast.gameObject; Debug.Log("Object selected : " + selectedObj2.name); //ExecuteEvents.ExecuteHierarchy(selectedObj, lookData, ExecuteEvents.submitHandler); //ExecuteEvents.ExecuteHierarchy(go, lookData, ExecuteEvents.pointerUpHandler); } if (selectedObjOld2 == selectedObj2) { if (staticTime2 + Time.deltaTime < selectTime) { staticTime2 += Time.deltaTime; } else { lookData = GetLookPointerEventData(HandPosition2); eventSystem.SetSelectedGameObject(null); if (lookData.pointerCurrentRaycast.gameObject != null) { selectedObjOld2 = selectedObj2; selectedObj2 = lookData.pointerCurrentRaycast.gameObject; Debug.Log("Object selected : " + selectedObj2.name); ExecuteEvents.ExecuteHierarchy(selectedObj2, lookData, ExecuteEvents.submitHandler); //ExecuteEvents.ExecuteHierarchy(go, lookData, ExecuteEvents.pointerUpHandler); } } } // TODO: Add SwipeUp and Down support : test selectedObj for slider else { staticTime2 = 0; } } } } } else { manager = KinectManager.Instance; } }
void Update() { KinectManager Manager = KinectManager.Instance; if (Manager && Manager.IsInitialized() && (Time.frameCount % interval == 0)) { if (enablePreview && kinectPreview) { Texture2D tex = Manager.GetUsersClrTex(); Sprite sprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f)); kinectPreview.sprite = sprite; } int iJointIndex = (int)TrackedJoint; if (Manager.IsUserDetected()) { uint user1Id = Manager.GetPlayer1ID(); uint user2Id = Manager.GetPlayer2ID(); // Tracking user 1 if (Manager.IsJointTracked(user1Id, iJointIndex)) { Vector3 posJoint = Manager.GetRawSkeletonJointPos(user1Id, iJointIndex); if (posJoint != Vector3.zero) { // 3d position to depth Vector2 posDepth = Manager.GetDepthMapPosForJointPos(posJoint); // depth pos to color pos Vector2 posColor = Manager.GetColorMapPosForDepthPos(posDepth); //float scaleX = (float)posColor.x / KinectWrapper.Constants.ColorImageWidth; //float scaleY = 1.0f - (float)posColor.y / KinectWrapper.Constants.ColorImageHeight; if (TrackingMarker) { TrackingMarker.anchoredPosition = new Vector2(posColor.x - kinectPreview.rectTransform.rect.width, -posColor.y); } if (!isNetwork) { for (int i = 0; i < (Manager.IsJointTracked(user2Id, iJointIndex) ? 2 : 4); i++) { GameObject d = defendersOffline[i]; float newX = transform.position.x - posJoint.x + i + 0.5f - number / 2; d.transform.position = Vector3.Lerp(d.transform.position, new Vector3(newX, d.transform.position.y, d.transform.position.z), smoothFactor * Time.deltaTime); } } else { for (int i = 0; i < (Manager.IsJointTracked(user2Id, iJointIndex) ? 2 : 4); i++) { DefenderBehavior d = defenders[i]; float newX = transform.position.x - posJoint.x + i + 0.5f - number / 2; d.gameObject.transform.position = Vector3.Lerp( d.gameObject.transform.position, new Vector3(newX, d.gameObject.transform.position.y, d.gameObject.transform.position.z), smoothFactor * Time.deltaTime); } } } } // Tracking user 2 if (Manager.IsJointTracked(user2Id, iJointIndex)) { Vector3 posJoint = Manager.GetRawSkeletonJointPos(user2Id, iJointIndex); if (posJoint != Vector3.zero) { // 3d position to depth Vector2 posDepth = Manager.GetDepthMapPosForJointPos(posJoint); // depth pos to color pos Vector2 posColor = Manager.GetColorMapPosForDepthPos(posDepth); if (TrackingMarker2) { TrackingMarker2.anchoredPosition = new Vector2(posColor.x - kinectPreview.rectTransform.rect.width, -posColor.y); } if (!isNetwork) { for (int i = 2; i < 4; i++) { GameObject d = defendersOffline[i]; Vector3 newPosition = defendersOffline[i].transform.position; newPosition.x = transform.position.x - posJoint.x; newPosition.x += i - number / 2; d.transform.position = Vector3.Lerp(d.transform.position, newPosition, smoothFactor * Time.deltaTime); } } else { for (int i = 2; i < 4; i++) { DefenderBehavior d = defenders[i]; float newX = transform.position.x - posJoint.x + i - number / 2; d.gameObject.transform.position = Vector3.Lerp( d.gameObject.transform.position, new Vector3(newX, d.gameObject.transform.position.y, d.gameObject.transform.position.z), smoothFactor * Time.deltaTime); } } } } } } }
// Update is called once per frame void Update() { KinectManager manager = KinectManager.Instance; // get 1st player or 2nd player if (playerIDchoice == 0) { playerID = manager != null?manager.GetPlayer1ID() : 0; } else if (playerIDchoice == 1) { playerID = manager != null?manager.GetPlayer2ID() : 0; } if (playerID <= 0) { // reset the pointman position and rotation if (transform.position != initialPosition) { transform.position = initialPosition; } if (transform.rotation != initialRotation) { transform.rotation = initialRotation; } for (int i = 0; i < bones.Length; i++) { bones[i].gameObject.SetActive(true); bones[i].transform.localPosition = Vector3.zero; bones[i].transform.localRotation = Quaternion.identity; if (SkeletonLine) { lines[i].gameObject.SetActive(false); } } return; } // set the user position in space Vector3 posPointMan = manager.GetUserPosition(playerID); posPointMan.z = !MirroredMovement ? -posPointMan.z : posPointMan.z; // store the initial position if (initialPosUserID != playerID) { initialPosUserID = playerID; initialPosOffset = transform.position - (MoveVertically ? posPointMan : new Vector3(posPointMan.x, 0, posPointMan.z)); } transform.position = initialPosOffset + (MoveVertically ? posPointMan : new Vector3(posPointMan.x, 0, posPointMan.z)); // update the local positions of the bones for (int i = 0; i < bones.Length; i++) { if (bones[i] != null) { int joint = MirroredMovement ? KinectWrapper.GetSkeletonMirroredJoint(i): i; if (manager.IsJointTracked(playerID, joint)) { bones[i].gameObject.SetActive(true); Vector3 posJoint = manager.GetJointPosition(playerID, joint); posJoint.z = !MirroredMovement ? -posJoint.z : posJoint.z; Quaternion rotJoint = manager.GetJointOrientation(playerID, joint, !MirroredMovement); rotJoint = initialRotation * rotJoint; posJoint -= posPointMan; if (MirroredMovement) { posJoint.x = -posJoint.x; posJoint.z = -posJoint.z; } bones[i].transform.localPosition = posJoint; bones[i].transform.rotation = rotJoint; } else { bones[i].gameObject.SetActive(false); } } } if (SkeletonLine) { for (int i = 0; i < bones.Length; i++) { bool bLineDrawn = false; if (bones[i] != null) { if (bones[i].gameObject.activeSelf) { Vector3 posJoint = bones[i].transform.position; int parI = parIdxs[i]; Vector3 posParent = bones[parI].transform.position; if (bones[parI].gameObject.activeSelf) { lines[i].gameObject.SetActive(true); //lines[i].SetVertexCount(2); lines[i].SetPosition(0, posParent); lines[i].SetPosition(1, posJoint); bLineDrawn = true; } } } if (!bLineDrawn) { lines[i].gameObject.SetActive(false); } } } }