Unity 3D逼真的加速度计控制

Unity 3D realistic accelerometer control

我们如何实现类似这个游戏的控制? https://play.google.com/store/apps/details?id=com.fridgecat.android.atiltlite&hl=en

您可以使用内置物理学来做到这一点:

  1. 从一些简单的缩放立方体创建一个关卡(不要忘记地面)。

  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);
        }
    
    }
    

现在你有了工作球物理学。要使球的行为如您所愿,请尝试使用刚体属性。例如,将阻力更改为 0.1 之类的值。