OculusRiftの加速度センサの値をUnityから取れた。 float x = 0, y = 0, z = 0; OVRDevice.GetAcceleration( 0, ref x, ref y, ref z );
— GOROman - SKB01 (@GOROman) 2013, 10月 17
最初はKeyNotFoundExceptionで弾かれてうまくできませんでした。
using UnityEngine;
using System.Collections;
public class otamesi : MonoBehaviour {
float[] m_a = new float[3];
float[] m_v = new float[3];
float[] neo_a = new float[3];//加速度の増加量(微小時間の加速度
float[] a = new float[3];//oculusからとる加速度
float[] v = new float[3];//速度
float[] d = new float[3];//変位
// Use this for initialization
void Start () {
OVRDevice.GetAcceleration( 0, ref m_a[0], ref m_a[1], ref m_a[2] );
}
// Update is called once per frame
void Update () {
float time = Time.deltaTime;
OVRDevice.GetAcceleration( 0, ref a[0], ref a[1], ref a[2] );
for(int i=0;i<3;i++){
neo_a[i] = m_a[i] - a[i];
v[i] = neo_a[i] * time + m_v[i];
d[i] = neo_a[i] * time * time / 2.0f + m_v[i] * time;
d[i] = Mathf.Round(d[i]*100.0f);
m_a[i] = a[i];
m_v[i] = v[i];
}
Vector3 obj_pos = new Vector3(-d[0],-d[1],-d[2]);
gameObject.transform.position += obj_pos;
Debug.Log(d[0]+","+d[1]+","+d[2]);
}
}