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

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

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

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

СообщениеДобавлено: 18 июл 2018, 22:22
waruiyume
Я через rigibody2d velocity двигаю объект каждый кадр, все это я умножаю на Time.fixedDeltaTime

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

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

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

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


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

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

СообщениеДобавлено: 18 июл 2018, 22:35
waruiyume
В этом всё так же нет смысла. Что вы получаете умножая юниты в секунду на, по сути, константу?

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

СообщениеДобавлено: 18 июл 2018, 22:40
GreatDrek
waruiyume писал(а):В этом всё так же нет смысла. Что вы получаете умножая юниты в секунду на, по сути, константу?


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


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

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

СообщениеДобавлено: 18 июл 2018, 22:43
Cr0c
GreatDrek писал(а):Переменная "x" на эмуляторе увеличивается быстрей чем на телефоне.

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

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

СообщениеДобавлено: 18 июл 2018, 22:47
GreatDrek
Cr0c писал(а):
GreatDrek писал(а):Переменная "x" на эмуляторе увеличивается быстрей чем на телефоне.

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


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


А метод FixedUpdate сам стабилизирует все?

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

СообщениеДобавлено: 18 июл 2018, 23:48
Cr0c
GreatDrek писал(а):А метод FixedUpdate сам стабилизирует все?

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

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

СообщениеДобавлено: 18 июл 2018, 23:54
GreatDrek
Cr0c писал(а):
GreatDrek писал(а):А метод FixedUpdate сам стабилизирует все?

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

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

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

СообщениеДобавлено: 18 июл 2018, 23:56
Cr0c
GreatDrek писал(а):
Cr0c писал(а):
GreatDrek писал(а):А метод FixedUpdate сам стабилизирует все?

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

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

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

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

СообщениеДобавлено: 14 авг 2018, 20:31
getAlex
waruiyume писал(а):В этом всё так же нет смысла. Что вы получаете умножая юниты в секунду на, по сути, константу?

Не совсем верно. Скейл тайма фиксед апдейта иногда меняют в процессе игры для предания слоу-мо эффектов с разным замедлением во времени, а умножая на дельту, ты изменяешь величину в квадрате, т.е. параболически. Например, авария, персонаж вылетает из стекла машины и дальше замедляется, а осколки от машины просто летят замедленно-линейно на заднем фоне.
В остальных случаях, это просто умножение на константу.