Unity CrossPlatformInputManager не возвращает правильное значение оси - PullRequest
0 голосов
/ 13 мая 2019

Я следовал этой серии уроков , чтобы создать 2D-игру с боковой прокруткой.В PlayerController я поменял Input для CrossPlatformController, чтобы использовать экранные кнопки для перемещения, но теперь нажатие любой из кнопок перемещения ничего не дает.

Оба являются UIButtons на Canvas с именем «Horizontal»;тот, который движется вправо, имеет значение оси 1, а левый - -1.Я настроил Debug.Log для чтения GetAxis при нажатии кнопки, и это результаты.

Я думаю, единственные числа, которые должны отображаться, это 1 и 0, но этодело не в этом.

Игнорирование прыжков и аниматоров, это то, что у меня есть для функции ComputeVelocity.«motion» - это то же самое, что и «move» в учебном коде.

    protected override void ComputeVelocity()
    {

        Vector2 motion = Vector2.zero;

        motion.x = CrossPlatformInputManager.GetAxis("Horiztonal");

        if (motion.x != 0) { Debug.Log("Should be moving."); }

        Debug.Log(CrossPlatformInputManager.GetAxis("Horizontal"));

        targetVelocity = motion * maxSpeed;

    }

Я предполагаю, что когда я устанавливаю motion.x в значение GetAxis, оно округляется до 0, так как число очень мало,Я попытался обойти это, проверив, больше ли GetAxis или меньше нуля, и затем установив targetVelocity на maxSpeed ​​(или -maxSpeed), если это так, но в этом случае игрок не всегда прекращает движение после того, как я отпущу кнопку.

Я поставлен в тупик относительно того, является ли это проблемой с моей настройкой или мне нужно кодировать в обход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...