Gravity on Android
Hello folks, I need help for something. I got an android game in which gravity change depending how you tilt the phone. I managed to get it to tilt forward, backward, and to the side. But I can't get it to reverse.
As shown in the image below, when I turn the phone following the arrows, I want the gravity to slowly go in reverse. So we go from the up left picture, to the right down picture. 
I tried with the accelerometer, I tried with the gyroscope, but so far I lucked out. Anyone can help? Here is my code so far
 using UnityEngine;
 using System.Collections;
 
 public class GravityGyro : MonoBehaviour {
 
     Vector3 grav_ini;
 
     float tempy;
     float tempx;
     float tempz;
 
 
     public float _speed;
     public int UpDown = 0;
 
     void Awake () {
         Input.gyro.enabled = true;
         grav_ini = Physics.gravity;
         tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
         tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
         tempz = 0 - (float)System.Math.Round(Input.acceleration.z,1);
 
 
     }
 
     public void ResetGravity(){
         //I have a button to reset gravity should I need it
         tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
         tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
         tempz = 0 - (float)System.Math.Round(Input.acceleration.z,1);
 
         Input.gyro.enabled = true;
 
     }
 
     // Update is called once per frame
     void Update () {
 
 
         //gravity tilt
 // I tested the axis one by one to see which one I needed to use where, except for the one that command Physics.gravity.y which is the one I'm stuck on
         Physics.gravity = grav_ini + (new Vector3((float)System.Math.Round(tempx + Input.acceleration.x,1),(float)System.Math.Round(tempy + Input.acceleration.y,1),(float)System.Math.Round(tempy + Input.acceleration.y,1))*_speed); 
 
 
     }
 
 }
 
                 
                demo-help.png 
                (259.9 kB) 
               
 
              
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by Sawula · Jan 18, 2017 at 01:14 PM
nevermind, a friend at school helped me
 using UnityEngine;
 using System.Collections;
 
 public class GravityGyro : MonoBehaviour {
 
     Vector3 grav_ini;
 
     float tempy;
     float tempx;
     float tempz;
 
     float gravgyroup;
     public float _toPlafond;
 
     public float _speed;
 
     void Awake () {
         Input.gyro.enabled = true;
         Physics.gravity = new Vector3 (0,-150,0);
         grav_ini = Physics.gravity;
 
         tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
         tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
         gravgyroup = 0;
 
 
 
     }
 
     public void ResetGravity(){
         Input.gyro.enabled = true;
         Physics.gravity = new Vector3 (0,-150,0);
         grav_ini = Physics.gravity;
         tempy = 0 - (float)System.Math.Round(Input.acceleration.y,1);
         tempx = 0 - (float)System.Math.Round(Input.acceleration.x,1);
         gravgyroup = 0;
 
 
     }
 
     // Update is called once per frame
     void Update () {
 
         Debug.Log (Physics.gravity.y);
 
 
         //gravity tilt
         Physics.gravity = grav_ini + (new Vector3((float)System.Math.Round(tempx + Input.acceleration.x,1),(gravgyroup - grav_ini.y)*_toPlafond/_speed,(float)System.Math.Round(tempy + Input.acceleration.y,1))*_speed); 
 
         gravgyroup = ((600/360) * (float)System.Math.Round(Input.gyro.attitude.eulerAngles.z)) -300;
 
     }
 
 }
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                