Почему Xcode не запускает / калибрует скрипт акселерометра Unity? - PullRequest
0 голосов
/ 19 мая 2019

Я искал решения повсюду, но похоже, что моя сборка IOS не запускает определенный код в скрипте. Я пытаюсь определить начальную позицию устройства iOS, чтобы она соответствовала ускорению игрового объекта. Эти коды работают в едином пульте, но не при тестировании на iPhone, я не знаю почему. Я не хочу, чтобы телефон был полностью разложен, чтобы можно было правильно использовать акселерометр. У меня есть 2 сценария, которые выполняют свою работу, но мне нужно только один прикрепленный к игровому объекту. Script1

 float Speed = 13;
     float accelY;
 
     public void Start()
     {
         accelY = Input.acceleration.y;
     }
 
     void FixedUpdate()
     {
         float x = Input.acceleration.x ;
         float y = Input.acceleration.y - accelY;
         Vector2 dir = new Vector2(x, y);
         if (dir.sqrMagnitude > 1)
             dir.Normalize();
         dir *= Time.deltaTime;
         transform.Translate(dir * Speed, Space.World);
     }

Скрипт2

 Matrix4x4 calMatrix;
 float Speed = 13;
 void Start()
 {
     Calibrate();
 }
 void Calibrate()
 {
     Vector3 accelSnap = Input.acceleration;
     Quaternion rotateQua = Quaternion.FromToRotation(new Vector3(0, 0, -1), accelSnap);
     Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, rotateQua, new Vector3(1, 1, 1));
     this.calMatrix = matrix.inverse;
 }
 Vector3 GetAccel(Vector3 accelerator)
 {
     Vector3 accel = this.calMatrix.MultiplyVector(accelerator);
     return accel;
 }
 void Update()
 {
     Vector2 dir = GetAccel(Input.acceleration);
     if (dir.sqrMagnitude > 1)
         dir.Normalize();
     dir *= Time.deltaTime;
     transform.Translate(dir * Speed);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...