2016-06-01 3 views
0

Я пытаюсь получить ускорение устройства в единстве, чтобы переместить объектАкселерометр определяет вращение вместо ускорения

public class ExampleClass : MonoBehaviour { 
    public float speed = 10.0F; 
    void Update() { 
     Vector3 dir = Vector3.zero; 

     // we assume that device is held parallel to the ground 
     // and Home button is in the right hand 

     // remap device acceleration axis to game coordinates: 
     // 1) XY plane of the device is mapped onto XZ plane 
     // 2) rotated 90 degrees around Y axis 

     dir.x = -Input.acceleration.y; 
     dir.z = Input.acceleration.x; 

     // clamp acceleration vector to unit sphere 
     if (dir.sqrMagnitude > 1) 
      dir.Normalize(); 

     // Make it move 10 meters per second instead of 10 meters per frame... 
     dir *= Time.deltaTime; 

     // Move object 
     transform.Translate(dir * speed); 
    } 
} 

Но когда я запускаю игру на устройстве, объект перемещается и останавливается в зависимости от ориентации устройства, а не ускорение.

Я попытался также напечатать Input.acceleration показания

GUI.Button(new Rect(10, 10, 150, 80), Input.acceleration.x + "\n" + Input.acceleration.y + "\n" + Input.acceleration.z); 

, и я заметил, что значения трех чисел меняются только тогда, когда я повернуть устройство, и их значение меняется всегда -1 и 1.

Я знаю, что этот акселерометр используется для измерения ускорения, а не для вращения. и датчик, который измеряет вращение, представляет собой гироскоп.

Почему это происходит? Как читать ускорение вместо вращения.

+0

Акселерометр измеряет силы, приложенные к устройству. в частности, гравитации, которая всегда присутствует. в зависимости от того, как ваше устройство ориентировано, гравитация применяется по-разному по осям. – njzk2

ответ

1

Большинство устройств имеют гироскопа в эти дни так попробовать Input.gyro.userAcceleration

Обратите внимание, что на большинстве гироскоп андроид устройств выключен по умолчанию, и вам необходимо установить Input.gyro.enabled истина.

+0

не работает! Это не дало мне показаний об ускорении устройства. –

+0

хорошо, что это вам дало? угловое ускорение снова? –

+1

Извините, теперь я вижу, что это работает. Я думал, что показания ускорения в единстве будут сильно увеличиваться при перемещении устройства, поэтому я не мог сразу заметить изменение ускорения. –