2017-10-25 15 views
0

私はユニティシーンの球の中に360のビデオを持っています。私はジャイロスクリプトを使っていますので、ユーザーはムービーを回転して見ることができます。そして私は、カメラが人物の位置ではなく、移動体の位置で開始したいが、私はそれをやろうとしている方法が機能していません。開始位置ジャイロスコープカメラのユニティ

public class Gyro : MonoBehaviour 
{ 


    void Start() 
    { 
     if (SystemInfo.supportsGyroscope) 
     { 
      Input.gyro.enabled = true; 
     } 


      GameObject cameraParent = new GameObject("camParent"); 
      cameraParent.transform.position = this.transform.position; 
      this.transform.parent = cameraParent.transform; 
      cameraParent.transform.Rotate(Vector3.right, 90); 

    } 


    void Update() 
    { 


      Quaternion cameraRotation = new Quaternion(Input.gyro.attitude.x, Input.gyro.attitude.y, -Input.gyro.attitude.z, -Input.gyro.attitude.w); 
      this.transform.localRotation = cameraRotation; 


    } 
} 

SOLUTION

void Start() 
{ 
     Application.targetFrameRate = 60; 
     initialYAngle = transform.eulerAngles.y; 
     Input.gyro.enabled = true; 
    } 

    void Update() 
    { 
     if(calibra){ 
      CalibrateYAngle(); 
      calibra = false; 
     } 
     ApplyGyroRotation(); 
     ApplyCalibration(); 
    } 



    public void CalibrateYAngle() 
    { 
     calibrationYAngle = appliedGyroYAngle - initialYAngle; // Offsets the y angle in case it wasn't 0 at edit time. 
    } 

    void ApplyGyroRotation() 
    { 
     transform.rotation = Input.gyro.attitude; 
     transform.Rotate(0f, 0f, 180f, Space.Self); // Swap "handedness" of quaternion from gyro. 
     transform.Rotate(90f, 180f, 0f, Space.World); // Rotate to make sense as a camera pointing out the back of your device. 
     appliedGyroYAngle = transform.eulerAngles.y; // Save the angle around y axis for use in calibration. 
    } 

    void ApplyCalibration() 
    { 
     transform.Rotate(0f, -calibrationYAngle, 0f, Space.World); // Rotates y angle back however much it deviated when calibrationYAngle was saved. 
    } 
+0

[this](https://stackoverflow.com/q/46935419/3785314)と同じ人ですか? – Programmer

答えて

1
 Quaternion cameraRotation = new Quaternion(Input.gyro.attitude.x, Input.gyro.attitude.y, -Input.gyro.attitude.z, -Input.gyro.attitude.w); 
     this.transform.localRotation = cameraRotation; 

これで、カメラに正確な位置を指定したい場合は、最後のフレームと現在のフレームの差分を現在の位置に追加/減算する必要があります。

関連する問題