Offset di Telepon Miring. Bug Akselerometer

Saya membuat game yang agak balapan. Mobil otomatis bergerak maju, tapi untuk memutarnya ke samping, saya mengukur putaran ponsel. Karena saya harus mengukur percepatan pada sumbu x, saya menggunakan:

Direction.x = Input.acceleration.x * Time.deltaTime; 
Transform.translate (Direction.x * 5f);

Saat saya memainkan game tersebut, mobil berputar sesuai keinginan saya saat saya memiringkan ponsel pada sumbu x. Namun masalahnya, ketika saya meletakkan ponsel di atas meja, mobil melaju ke kiri dengan sangat lambat, yang tidak masuk akal karena sudutnya 0 derajat. Untuk memastikan ini bukan karena permukaan meja, saya memainkannya di Unity Simultator dan hal yang sama terjadi. Mobil melaju ke kiri dengan sangat lambat. Saat saya debug.log, dikatakan bahwa Direction.x sekitar -0,000147..., angka yang sangat kecil. Apakah ada cara untuk mengatasi masalah ini, sehingga ketika ponsel diam, Direction.X mobil menjadi 0, atau ada yang salah dengan kode saya.


person Infinity Max    schedule 05.11.2016    source sumber


Jawaban (1)


Terkadang fungsi Unity Translate mengalami gangguan, karena lebih baik menggunakan operasi standar dengan vektor. Coba saja kurangi nilai minimum akselerometer:

float min_value = 0.01f

if(Mathf.Abs(Input.acceleration.x) < min_value)
    Direction.x = Input.acceleration.x * Time.deltaTime;
else
    Direction.x = 0;

transform.position = transform.position + Direction.x * 5f;
person OnionFan    schedule 05.11.2016