Я искал решения повсюду, но похоже, что моя сборка 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);
}