手机是怎么数出自己转了几圈的
Looping 不需要摄像头,也不需要裁判:手机自己测量自己的投掷。从它离开你的手,到分数显示出来,中间发生了这些事。
每部手机都有的两个传感器
加速度计测量手机受到的力。平放在桌上时,它读到的是重力,大约 9.8 m/s²。陀螺仪测量手机绕三个轴各自转得有多快,单位是度每秒(°/s)。
它们装进手机,本来是为了旋转屏幕、计步和拍照防抖。Looping 通过浏览器读取它们,每秒几十次。
发现飞行
手机离手的那一刻,就再没有东西推着它了。无论上升还是下落,它都处于自由落体状态,加速度计的读数几乎为零。这突如其来的“寂静”就是飞行的标志。当手或床垫把手机停住时,读数会出现一个尖峰,飞行到此结束。
旋转的手机会把画面搅乱:加速度计并不正好在手机的中心,旋转本身就会给它加上一股力。所以游戏找的不是一个简单的零,而是检查加速度计的读数是否恰好能由陀螺仪测到的旋转来解释。在手里摇晃的手机,或者在桌上像陀螺一样转的手机,都过不了这一关。
飞行至少要持续 0.3 秒才算数:大约 11 厘米高,足以把一次投掷和手抖一下区分开。
数圈
飞行过程中,陀螺仪每秒多次给出旋转速度。把每个读数乘以它对应的那一小段时间,再全部加起来,就得到手机转过的总角度,不管绕的是哪个轴:像硬币一样前后翻转(空翻)、绕长轴旋转(横滚),还是像陀螺一样平着转(平转)。
一圈是 360°。屏幕上的数字是转满的圈数,转到 80% 就算一圈。旁观者看到的,会比自由飞行中实际转的多出大约五分之一圈,因为手机出手时已经在手里转了,接住时也还在转。排行榜则看总旋转,精确到度。
高度从哪里来
游戏看不见天花板:它是在给飞行计时。向上抛出、又在同一高度接住的物体,滞空时间一半用来上升,一半用来下落,高度就这样算出来:在空中 0.5 秒大约是 30 厘米,0.75 秒大约 70 厘米,1 秒大约 1.2 米。
这只是估算。如果接住的位置比出手时低,数字会稍微给你多算一点。
当传感器跟不上时
每个陀螺仪都有上限:旋转速度超过它之后,它只会一直报同一个数。我们测到的结果是,部分 Android 手机约 1,150 °/s,另一些为 2,300 °/s,较新的 iPhone 为 4,000 °/s,也就是每秒 11 圈。
投掷超过上限时,游戏不会凭空补上缺掉的圈数。它保留实际测到的最小值,并在结果里说明;什么都无法保证时,就拒绝这次投掷。分数可能低于真实值,但绝不会更高。
为什么由服务器来算分
你的手机只负责记录投掷,不负责评判。原始数据会发到游戏服务器,服务器对所有人用同一套规则算分,并核对这些数据描述的确实是一次自由飞行。一份记录只能计一次。
排行榜因此才可信:谁也没法提交一个数字,只能提交一次投掷。没有网络时,投掷会保留在手机上(最多 12 次,保留 7 天),网络恢复后再计分。
游戏读取什么,不读取什么
Looping 只读取运动传感器,别的什么都不读:没有摄像头,没有麦克风,没有位置。记录了什么、保留多久,都写在法律声明里。
玩 Looping了解更多
English Français Español Português Deutsch Italiano Nederlands Polski Türkçe Русский Українська العربية हिन्दी বাংলা Bahasa Indonesia Tiếng Việt ไทย 日本語 한국어 中文