Посмотрите, поможет ли это. Это простой пример множества способов реализации угловой скорости.
Обратите внимание, что эффект блокировки Гимбела не учитывается в расчетах. Возможно, вы захотите ограничить вращение в определенном диапазоне. Также вам понадобится мертвая зона для дельты, например if(delta < epsilon) delta = 0;
.
float speed = 40f;
void Update()
{
tilt = new Vector3(Input.acceleration.x, Input.acceleration.y, Mathf.Clamp(Input.acceleration.z,-15,15));
tilt = Quaternion.Euler(90, 0, 90) * tilt; // Change Rotation according to camera view
if(tilt.x > 0.05f || tilt.x < -0.05f && tilt.x > -6f || tilt.x < 6f)
{
var delta = -tilt.x - transform.localRotation.x;
transform.localRotation += (new Quaternion(delta, 0, 0, 3) * Time.deltaTime * speed);
}
if (tilt.z < -0.1f || tilt.z >0.1f)
{
var delta = -tilt.z - transform.localRotation.z;
transform.localRotation += (new Quaternion(0, 0, -tilt.z, 3) * Time.deltaTime * speed);
}
}