Как рассчитать положение персонажа по параболе (с помощью акселерометра) - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь воссоздать бонусную сцену из игры Sonic the Hedgehog 2, в которой он путешествует по полуколбам, собирая кольца, на Android Studio. Прямо сейчас я хочу использовать движение персонажа, которое будет определяться акселерометром телефона (Z-вращение) в соответствии с параболой; положение персонажа НЕ должно превышать края трубы. Проблема в том, что независимо от того, что я делаю с координатами x и y, изменение положения минимально. Я использую эмулятор Nexus 1080 x 1920. Любые дополнительные предложения, связанные с вращением или анимацией персонажа, также приветствуются.

Вот видео для справки: 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 + ")");

    }

EDIT:

Я проверил координаты x и y через Logcat, и кажется, что x, по причине, которую я не могу обнаружить, равен 540, когда z равен 180 градусам, и 540, когда z равен -180 градусов

...