Unity3D.ru • При низком фпс объект движется быстрее.

При низком фпс объект движется быстрее.

Раздел, посвящённый самому важному - скорости.

При низком фпс объект движется быстрее.

Сообщение GreatDrek 18 июл 2018, 22:13

Всем привет, такой вопрос. Я через rigibody2d velocity двигаю объект каждый кадр, все это я умножаю на Time.fixedDeltaTime что бы скорость движения на всех устройствах была одинаковой, так оно и есть. Да только на очень слабых телефонах, на которых получается фпс 5-15 объект движется быстрей чем на нормальных устройствах, можно с этим как то бороться или такая проблема будет в любом случае на очень слабых устройствах? Я решил посмотреть как работает google play game services multiplayer, в тестовой сцене я двигаю два объекта, я запустил сцену на телефоне и в эмуляторе андроид, в эмуляторе очень сильно проседает фпс и объект в нем движется чуть быстрее.
GreatDrek
UNец
 
Сообщения: 18
Зарегистрирован: 11 окт 2012, 17:27

Re: При низком фпс объект движется быстрее.

Сообщение waruiyume 18 июл 2018, 22:22

Я через rigibody2d velocity двигаю объект каждый кадр, все это я умножаю на Time.fixedDeltaTime

Изображение
В этом нет смысла. Показывайте код.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 4927
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: При низком фпс объект движется быстрее.

Сообщение GreatDrek 18 июл 2018, 22:31

waruiyume писал(а):
Я через rigibody2d velocity двигаю объект каждый кадр, все это я умножаю на Time.fixedDeltaTime

Изображение
В этом нет смысла. Показывайте код.


Синтаксис:
Используется csharp
void FixedUpdate(){
    rb.velocity = transform.up * (Time.fixedDeltaTime * speed);
}
GreatDrek
UNец
 
Сообщения: 18
Зарегистрирован: 11 окт 2012, 17:27

Re: При низком фпс объект движется быстрее.

Сообщение waruiyume 18 июл 2018, 22:35

В этом всё так же нет смысла. Что вы получаете умножая юниты в секунду на, по сути, константу?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 4927
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: При низком фпс объект движется быстрее.

Сообщение GreatDrek 18 июл 2018, 22:40

waruiyume писал(а):В этом всё так же нет смысла. Что вы получаете умножая юниты в секунду на, по сути, константу?


Синтаксис:
Используется csharp
float x = 0f;
void FixedUpdate(){
    x += Time.fixedDeltaTime;
}
 


Переменная "x" на эмуляторе увеличивается быстрей чем на телефоне.
GreatDrek
UNец
 
Сообщения: 18
Зарегистрирован: 11 окт 2012, 17:27

Re: При низком фпс объект движется быстрее.

Сообщение Cr0c 18 июл 2018, 22:43

GreatDrek писал(а):Переменная "x" на эмуляторе увеличивается быстрей чем на телефоне.

Проблема эмулятора. FixedUpdate по таймеру вызывается. И зачем скорость умножать на время? Физика не знам?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 2770
Зарегистрирован: 19 июн 2015, 13:50

Re: При низком фпс объект движется быстрее.

Сообщение GreatDrek 18 июл 2018, 22:47

Cr0c писал(а):
GreatDrek писал(а):Переменная "x" на эмуляторе увеличивается быстрей чем на телефоне.

Проблема эмулятора. FixedUpdate по таймеру вызывается. И зачем скорость умножать на время? Физика не знам?


То есть правильно делать так:
Синтаксис:
Используется csharp
void FixedUpdate(){
    rb.velocity = transform.up  * speed;
}
 


А метод FixedUpdate сам стабилизирует все?
GreatDrek
UNец
 
Сообщения: 18
Зарегистрирован: 11 окт 2012, 17:27

Re: При низком фпс объект движется быстрее.

Сообщение Cr0c 18 июл 2018, 23:48

GreatDrek писал(а):А метод FixedUpdate сам стабилизирует все?

Ты не знаешь, что такое СКОРОСТЬ?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 2770
Зарегистрирован: 19 июн 2015, 13:50

Re: При низком фпс объект движется быстрее.

Сообщение GreatDrek 18 июл 2018, 23:54

Cr0c писал(а):
GreatDrek писал(а):А метод FixedUpdate сам стабилизирует все?

Ты не знаешь, что такое СКОРОСТЬ?

Ты можешь нормально ответить? Так как это вот так ты не знаешь, не лучший ответ, FixedUpdate должен вызываться через одинаковый интервал времени, но в эмуляторе он этого не делает, проблема эмулятора или еще где будут проблемы сказать ты мне не можешь, если человек в этом эмуляторе запустит игру, у него будет другая скорость. Но при этом СКОРОСТЬ всегда одинаковая :-? :-? :-?
GreatDrek
UNец
 
Сообщения: 18
Зарегистрирован: 11 окт 2012, 17:27

Re: При низком фпс объект движется быстрее.

Сообщение Cr0c 18 июл 2018, 23:56

GreatDrek писал(а):
Cr0c писал(а):
GreatDrek писал(а):А метод FixedUpdate сам стабилизирует все?

Ты не знаешь, что такое СКОРОСТЬ?

Ты можешь нормально ответить? Так как это вот так ты не знаешь, не лучший ответ, FixedUpdate должен вызываться через одинаковый интервал времени, но в эмуляторе он этого не делает, проблема эмулятора или еще где будут проблемы сказать ты мне не можешь, если человек в этом эмуляторе запустит игру, у него будет другая скорость. Но при этом СКОРОСТЬ всегда одинаковая :-? :-? :-?

Ещё раз: скорость - это расстояние в секунду. Скорость в ригидбоди - это физика. Физика считается в FixedUpdate. В эмуляторе нормально не проверишь, только "плюс-минус километр".
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 2770
Зарегистрирован: 19 июн 2015, 13:50

Re: При низком фпс объект движется быстрее.

Сообщение getAlex 14 авг 2018, 20:31

waruiyume писал(а):В этом всё так же нет смысла. Что вы получаете умножая юниты в секунду на, по сути, константу?

Не совсем верно. Скейл тайма фиксед апдейта иногда меняют в процессе игры для предания слоу-мо эффектов с разным замедлением во времени, а умножая на дельту, ты изменяешь величину в квадрате, т.е. параболически. Например, авария, персонаж вылетает из стекла машины и дальше замедляется, а осколки от машины просто летят замедленно-линейно на заднем фоне.
В остальных случаях, это просто умножение на константу.
getAlex
Адепт
 
Сообщения: 1663
Зарегистрирован: 10 авг 2013, 18:30


Вернуться в Оптимизация

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2