Hi,there!
I have some questions in unity3d use gyroscope and webcam to make argument reality!
but when i build to android and start the app, my view is inverted to the left
my default orientation is “portrait”
and here are the scripts about gyroscope and webcam
gyroscope script:
using UnityEngine;
using System.Collections;
public class CameraGy : MonoBehaviour {
private bool gyroBool;
private Gyroscope gyro;
private Quaternion rotFix;
void Start()
{
var originalParent = transform.parent; // check if this transform has a parent
var camParent = new GameObject ("camParent"); // make a new parent
camParent.transform.position = transform.position; // move the new parent to this transform position
transform.parent = camParent.transform; // make this transform a child of the new parent
camParent.transform.parent = originalParent; // make the new parent a child of the original parent
gyroBool = Input.isGyroAvailable;
if (gyroBool) {
gyro = Input.gyro;
gyro.enabled = true;
if (Screen.orientation == ScreenOrientation.LandscapeLeft) {
camParent.transform.eulerAngles =new Vector3(90,90,0);
}
else if (Screen.orientation == ScreenOrientation.Portrait) {
camParent.transform.eulerAngles =new Vector3(90,180,0);
}
if (Screen.orientation == ScreenOrientation.LandscapeLeft) {
rotFix =new Quaternion(0,0,0.7071F,0.7071F);
}
else if (Screen.orientation == ScreenOrientation.Portrait) {
rotFix =new Quaternion(0,0,1,0);
}
//Screen.sleepTimeout = 0;
}
else
{
print("NO GYRO");
}
}
void Update ()
{
if (gyroBool)
{
Quaternion camRot = gyro.attitude * rotFix;
/*float tmp=camRot.x;
camRot.x=camRot.y;
camRot.y=tmp;*/
transform.localRotation = camRot;
}
GameObject.Find("x").guiText.text=gameObject.transform.rotation.x.ToString();
GameObject.Find("y").guiText.text=gameObject.transform.rotation.y.ToString();
GameObject.Find("z").guiText.text=gameObject.transform.rotation.y.ToString();
}
}
webcam script:
using UnityEngine;
using System.Collections;
public class WebCam : MonoBehaviour {
private WebCamTexture webCam;
public GameObject background;
// Use this for initialization
void Start () {
webCam =new WebCamTexture();
renderer.material.mainTexture=webCam;
background.transform.localScale=new Vector3(1,1,1);
background.guiTexture.texture=webCam;
webCam.Play();
}
// Update is called once per frame
void Update () {
}
}
can anyone help me to fix my problem!!
thanks a lot and sorry for my bad English!!!