public void GenerateDefenders() { RemoveDefenders(); defenders = new DefenderBehavior[4]; for (int x = 0; x < number; x++) { // Instantiate a new Defender Network Object. DefenderBehavior def = NetworkManager.Instance.InstantiateDefender( 0, new Vector3( transform.position.x + 0.5f - number / 2, 0, transform.position.z - 4), Quaternion.Euler(0, 180, 0) ); defenders[x] = def; } }
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); } } } } } } }