Unity 3D现实加速度计控制

时间:2015-03-29 18:10:44

标签: unity3d game-engine accelerometer

1 个答案:

答案 0 :(得分:5)

你可以用内置物理学做到这一点:

  1. 从一些简单的缩放立方体创建一个级别(不要忘记地面)。
  2. example of a simple level

    1. 添加球 - 球体,然后添加RigidBody。在刚体上设置一个约束 - 检查冻结位置y(或者如果你将设备倒置,它就能跳出关卡)。

    2. 将此脚本添加到场景的任何位置(例如添加到相机):

      using UnityEngine;
      
      public class GravityFromAccelerometer : MonoBehaviour {
      
          // gravity constant
          public float g=9.8f;
      
          void Update() {
              // normalize axis
              Physics.gravity=new Vector3( 
                  Input.acceleration.x,
                  Input.acceleration.z,
                  Input.acceleration.y
              )*g;
          }
      
      }
      

      或者如果您希望物理只影响这一个对象,请将此脚本添加到对象并关闭它受重力影响的刚体:

      using UnityEngine;
      
      [RequireComponent(typeof(Rigidbody))]
      public class ForceFromAccelerometer : MonoBehaviour {
      
          // gravity constant
          public float g=9.8f;
      
          void FixedUpdate() {
              // normalize axis
              var gravity = new Vector3 (
                  Input.acceleration.x,
                  Input.acceleration.z,
                  Input.acceleration.y
              ) * g;
      
              GetComponent<Rigidbody>().AddForce (gravity, ForceMode.Acceleration);
          }
      
      }
      
    3. 现在你有球的物理学。要使球按照您的喜好运行,请尝试使用刚体属性。例如,将拖动更改为0.1。

相关问题