Unity разное физическое поведение на разных размерах - PullRequest
2 голосов
/ 26 марта 2019

Я работаю над 2D-игрой с открытым миром, в которой есть персонаж, которого можно перемещать с помощью функций клавиатуры. Движение вызвано Rigidbody.AddForce ().
Проблема в том, что скорость перемещения не одинакова на экранах разных размеров.

Вот простой код:

void FixedUpdate()
{
    if (Input.GetButton("Move"))
        rigidbody.AddForce(transform.forward * speed);
}

Масса персонажа такая же, скорость плавания такая же, но все же, после того, как я переключаю вид игры на полноэкранный, персонаж движется явно быстрее. (Что странно и показывает, что это не проблема производительности.)
Я пытался протестировать автономную сборку, там все хорошо (хотя в сборке Android она выглядит немного медленнее), но мне нужно иметь общую скорость в редакторе, потому что я должен проектировать уровни, которые зависят от времени и времени зависит от скорости.

Ответы [ 2 ]

3 голосов
/ 27 марта 2019

Вы пытались умножить свою скорость с Time.fixedDeltaTime?Если это не сработало, попробуйте зависимую от платформы компиляцию:

    #if UNITY_STANDALONE_WIN
        //do something
    #elif UNITY_ANDROID
        // do something
    #endif
2 голосов
/ 04 апреля 2019

Физика работает в WorldSpace и не имеет ничего общего с ScreenSpace , поэтому ваша проблема выходит за рамки того, чем она кажется.Ожидается падение производительности на Android, но в автономном режиме, убедитесь, что вы используете FixedUpdate для физических операций (что вы делаете здесь) и убедитесь, что ничего не вызывает FixedTimeStep во время игрыслучайно.

...