Unity--移动设备重力感应探悉

    xiaoxiao2021-03-25  47

    经常我们在玩一些需要重力感应的一些手机游戏时,都会拿着手机在上下左右的晃动,从而去控制游戏中的一些物体。

    当我们尝试在代码中使用手机的重力感应,又该怎么使用呢?

    查了Unity的api查了google,看了很多的教程,好像懂了好像又没懂,没事我们自己去研究下。

    如果你对游戏开发稍微有些熟悉,你会知道有加速度这个词。

    我们去查Unity的api文档,我查的是中文的api,在搜索框输入acceleration,然后你会发现有Input.acceleration这个搜索结果,

    点击进去是这样的(中文UnityApi链接)

    我们看到这个函数返回的是Vector3,而Vector3是有x,y,z这3个float组成的,如果我们能搞明白手机的移动和这3个float的对应关系,那么我们就会使用手机的加速度了。

    首先我们在Unity中新建个项目或者在其他项目中新建个场景,然后建立个空对象,绑定上一个Test.cs的脚本,脚本内容为

    public class Test : MonoBehaviour { void Start () { InvokeRepeating("PrintAccelerationNumber",0.5f,1f); } void PrintAccelerationNumber() { Debug.Log("Input.acceleration.x: " + Input.acceleration.x); Debug.Log("Input.acceleration.y: " + Input.acceleration.y); Debug.Log("Input.acceleration.z: " + Input.acceleration.z); } }

    然后让手机去移动,我们去观察Console输出平台上显示的数据变化。怎么使用手机去调试加速度,您可参考这个点击打开链接

    连接好手机,把手机平放到桌面上,像这样

    当我们让手机的一边不动,抬起对面的一边到90度垂直桌面,像把一个物体抬起让它竖立在桌面上一样,然后让上面的Log输出只运行一个,把其他的先注释掉。

    经过几次的手机移动和对数据的观察,我们就会逐渐发现其中的对应关系。

    水平方向:

    手机左边不动,抬起右边到90度,对应的Input.acceleration.x变化,变化为从0到-1.0,简单记录为:0 → -1.0;

    手机右边不动,抬起左边到90度,对应的Input.acceleration.x变化,变化为从0到1.0,简单记录为:0 → 1.0;

    垂直方向:

    手机下边不动,抬起上边到90度,对应的Input.acceleration.y变化,变化为从0到-1.0,简单记录为:0 → -1.0;

    手机上边不动,抬起下边到90度,对应的Input.acceleration.y变化,变化为从0到1.0,简单记录为:0 → 1.0;

    x轴和y轴都确定了,那z轴呢,那么我们再按照上面的水平方向和垂直方向再去观察Log输出的数据变化:

    水平方向:无论从哪边开始往上抬,到90度,然后到180度,就是我们的手机的玻璃正面扣到桌面上了,对应的Input.acceleration.z变化,变化为从-1.0到0再到1.0,

    简单记录为: - 1.0→ 0 → 1.0;

    垂直方向:按照上面的操作也是一样的,对应的Input.acceleration.z变化,变化为从-1.0到0再到1.0,

    简单记录为: - 1.0→ 0 → 1.0;

    所以我们可以用一个图片简单记忆下

    横屏的手机,如下图

    那么竖屏的手机呢,如下图

    移动设备游戏中经常会遇到重力感应的开发,Unity简化了重力感应的开发, 通过访问Input.acceleration属性,取回加速度传感器的值。如果我们理解了加速度传感器的值的变化,那么也就可以灵活使用了。

    转载请注明原文地址: https://ju.6miu.com/read-27650.html

    最新回复(0)