- Home /
How can I detect if the phone is looking down?
How can one detect if the phone is looking down using the gyroscope?
I've been playing around hours with the phone gyroscope and rotations and I couldn't figure out how to detect if the phone is looking down or not.
I want to know at what degree the phone is compared to the ground.
suppose that the phone camera is looking directly downwards towards earth is the 0 degrees while looking right ahead at the horizon is 90 degrees.
Answer by Llama_w_2Ls · Dec 02, 2020 at 04:57 PM
Well I did once make a spirit level using a Gyroscope, which works on the x-axis and z-axis of your device. There are multiple ways of checking for screen orientation in world space. It's how your phone knows to turn portrait and landscape when tilted:
You could use the accelerometer, for example, on one of the axis to work out how tilted it is.
As well as the Gyroscope, which I'm going to use for this example.
Gyroscope Bubble Level
To create a bubble level that can detect whether your phone is flat (meaning facing directly up or down), you would need the gyroscope readings on the x-axis.
For example:
public class Gyroscope : MonoBehaviour
{
private UnityEngine.Gyroscope gyro; // Gyroscope
private Quaternion rot; // Base quaternion to get a rotation
private void Start()
{
EnableGyro();
}
private void EnableGyro()
{
if (SystemInfo.supportsGyroscope)
{
gyro = Input.gyro;
gyro.enabled = true;
rot = new Quaternion(0, 0, 1, 0);
}
}
private void Update()
{
transform.localRotation = gyro.attitude * rot;
transform.eulerAngles = new Vector3(transform.eulerAngles.x, 0, 0);
// The value 'transform.eulerAngles.x'
// is your phone's orientation on the x-axis
}
}
I have some more code for working out how straight your phone is on the z-axis as well, but that's for another day. You might want some text to display your orientation value, and assume a range where you can safely say that if the phone's x-angle is inbetween these two values, it is facing down.
Hope you get it to work @foghunt
Your answer

Follow this Question
Related Questions
Change Gyroscope forward 1 Answer
Android Gyroscope inaccuracy problems. 1 Answer
Pointing object at mouse using raycast only works when object is center screen. 2 Answers
How can I pitch and roll a circular platform without releasing vertical/horizontal input? 1 Answer
Gyroscope rotation offset 1 Answer