如何通过抛物线计算字符的位置(使用加速度计)

时间:2019-03-14 06:33:30

标签: java android canvas bitmap surfaceview

我正在尝试从刺猬索尼克2(Sonic the Hedgehog 2)中重新创建奖励阶段,他正在Android Studio上穿越一个半烟斗收集环。现在,我想使用根据抛物线通过手机的加速度计(Z旋转)确定角色的移动;角色的位置不得超过管道的边缘。问题是无论我对x和y坐标做什么,位置的变化都是最小的。我使用的是1080 x 1920 Nexus 5的模拟器。与旋转或设置角色动画有关的其他建议也将不胜感激。

这里有个视频供参考:https://youtu.be/JgbFHHHE4Vk

还有我的onSensorChanged()方法(x是位图的“左”值,y是“顶部”,z是z旋转值:

    @Override
    public void onSensorChanged(SensorEvent event) {
        //tilt phone and change position
        float[] values = event.values;
        float z = values[0];
        x = (1080/360) * (z + 180);
        y = (-109 / 21609) * (x - 442) * (x - 442) + 975;
        Log.d("TAGz", "(" + x + ", " + y + ")");

    }

编辑:

我通过Logcat检查了x和y坐标,由于某种原因我无法检测到x在z为180度时为540,而z为-180度时为540

0 个答案:

没有答案