Страница 1 из 1

Почему такая разница между едитором и apk?

СообщениеДобавлено: 16 июл 2017, 14:00
LemanRass
Здравствуйте.
Написал простенькую механику вращения колеса фортуны и столкнулся с проблемой что в окне едитора оно вращается хорошо а в собранном apk на емуляторе и на физ устройстве - с визуальными недочетами.
Вот видео:


Механика состоит из двух частей:
1) Вращение колеса за пальцем пользователя до момента пока он не отпустил палец.
2) Вращение колеса уже после того как пользователь отпустил палец с учетом инерции.

У меня проблемы с тем, что бы на всех устройствах переход между этими 2-я этапами вращения колеса визуально не был заметен.
То есть во втором этапе начальная скорость вращения должна соответствовать скорости с которой вращалось колесо во время первого этапа с последующим плавным замедлением.
Тот результат, который я вижу в окне юнити приемлим. Если бы только так же работало везде.

Вот так я вращаю колесо до его запуска (без инерции):
Синтаксис:
Используется csharp
    private void OnMouseDrag()
    {
        if (isRolling) return;
        float rotY = Input.GetAxis("Mouse Y") * 0.05f * Mathf.Rad2Deg;
        transform.Rotate(transform.up, rotY, Space.World);
    }


Вот так я рассчитываю скорость, с которой колесо будет вращатся когда пользователь отпустил палец:
Синтаксис:
Используется csharp
    private void OnMouseDown()
    {
        mouseHoldTime = Time.time;
        mouseHoldPos = Input.mousePosition;
    }

    private void OnMouseUp()
    {
        float totalTime = Time.time - mouseHoldTime;
        float totalDist = Vector2.Distance(mouseHoldPos, Input.mousePosition);
        var dir = ((mouseHoldPos.y - Input.mousePosition.y) < 0) ? WheelDirection.Up : WheelDirection.Down;
        float totalSpeed = totalDist / totalTime;
//500 это вручную подогнанная величина для более приятного визуального эффекта
        StartWheelRotation((totalSpeed / 500), dir);

        mouseHoldTime = 0.0f;
        mouseHoldPos = Vector2.zero;
    }
 

Re: Почему такая разница между едитором и apk?

СообщениеДобавлено: 16 июл 2017, 22:04
jet_aleks
Работает ровно так как Вы написали. GetAxis работает только на пк нормально, а на моб устройствах нужно либо дельту искать между down adn up косаниями, либо touch использовать, либо drag на канвасе.