Дергаются препятствия при движении игрока (Runner)

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Дергаются препятствия при движении игрока (Runner)

Сообщение CubeSide 27 фев 2019, 11:06

Создаю раннер под Android , столкнулся с такой проблемой . При движении дергаются препятствия .

P.S. извиняюсь за надпись пробной версии.
Думал что это может быть дерганное движение самого игрока или камеры , менял скрипт движения, но подергивания оставались .

Cкрипт движения:
private void LateUpdate()
{
//Движение камеры за игроком
camer.transform.position = new Vector3(0, 22, transform.position.z - 10 );

}
private void FixedUpdate()
{
// движение игрока
rb.AddForce(Vector3.forward * speedForw * Time.fixedDeltaTime*10);
}

Проверил Profiler и заметил что GPU очень нагружен , но не очень понимаю с чем именно это связано.
Изображение

Помогите кто чем может . Буду рад любому ответу .Спасибо
CubeSide
UNец
 
Сообщения: 24
Зарегистрирован: 12 сен 2018, 23:20

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение Jarico 27 фев 2019, 12:17

Крч... Т.к. все вычисления у тебя в FixedUpdate то частота обновления не совпадает с частотой рендеринга... Простыми словами у тебя физика тикает с меньшим временем чем рисуются кадры..

Update вызывается каждый кадр а FixedUpdate вызывается через определенные промежутки времени (Time.fixedDeltaTime) (чтобы получить сколько раз в секунду -> 1/Time.fixedDeltaTime = ticks per second)


По стандарту в Unity физика тикает с частотой 50 тиков в секунду а кадры рисуются с разной частотой и зависят от возможностей устройста и нагрузок, к примеру FPS может либо подскочить либо просесть из-за нагрузки и расчёты будут различаться т.к. дельта времени изменилась а в FixedUpdate дельта постоянна и расчёты будут одинаковыми вне зависимости от нагрузки устройства

Вот такое часто бывает что Rigidbody с коллайдером проскакивает сквозь другой коллайдер - это потому что расчёты выполнялись в Update а коллайдеры обновляются вместе с физикой т.е. когда вызывается FixedUpdate


Рекомендация:
Увеличить время тика физики ( Time.fixedDeltaTime = 1/60 = 0.016, 60 - это тиков в секунду (равно 60 кадрам в секунду), 0.016 это промежуток времени между тиками физики)

Если устройство выдаёт больше 60 фпс нужно ограничить его Application.targetFrameRate = 60
Последний раз редактировалось Jarico 27 фев 2019, 12:26, всего редактировалось 1 раз.
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение CubeSide 27 фев 2019, 12:25

Jarico писал(а):Крч... Т.к. все вычисления у тебя в FixedUpdate то частота обновления не совпадает с частотой рендеринга... Простыми словами у тебя физика тикает с меньшим временем чем рисуются кадры..

Update вызывается каждый кадр а FixedUpdate вызывается через определенные промежутки времени (Time.fixedDeltaTime) (чтобы получить сколько раз в секунду -> 1/Time.fixedDeltaTime = ticks per second)


По стандарту в Unity физика тикает с частотой 50 тиков в секунду а кадры рисуются с разной частотой и зависит от возможностей устройста и нагрузок, к примеру FPS может либо подскочить либо просесть из-за нагрузки и расчёты будут различаться т.к. дельта времени изменилась а в FixedUpdate дельта постоянна и расчёты будут одинаковыми вне зависимости от нагрузки устройства


Рекомендация:
Увеличить время тика физики ( Time.fixedDeltaTime = 1/60 = 0.016, 60 - это тиков в секунду (равно 60 кадрам в секунду), 0.016 это промежуток времени между тиками физики)

Если устройство выдаёт больше 60 фпс нужно ограничить его Application.targetFrameRate = 60


Спасибо за помощь , понял проблему. Не подскажешь где поменять время тика физики , в самом редакторе или в скрипте ?
CubeSide
UNец
 
Сообщения: 24
Зарегистрирован: 12 сен 2018, 23:20

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение Jarico 27 фев 2019, 12:30

CubeSide писал(а):Спасибо за помощь , понял проблему. Не подскажешь где поменять время тика физики , в самом редакторе или в скрипте ?


Time.fixedDeltaTime - можно изменить либо через скрипт либо через редактор

В редакторе:

Project Settings -> Time -> Fixed Timestep (def. 0.015)

В скрипте:
Синтаксис:
Используется csharp
public int tickrate = 66; //66 тиков в секунду

void Start()
{
Time.fixedDeltaTime = (float)1/(float)66; (обязательно нужно float, ибо установится значение 0.00000001    и редактор зависнет сожрав оперативную память и используя проц на 100%)
}
 
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение CubeSide 27 фев 2019, 13:42

Jarico писал(а):
CubeSide писал(а):Спасибо за помощь , понял проблему. Не подскажешь где поменять время тика физики , в самом редакторе или в скрипте ?


Time.fixedDeltaTime - можно изменить либо через скрипт либо через редактор

В редакторе:

Project Settings -> Time -> Fixed Timestep (def. 0.015)

В скрипте:
Синтаксис:
Используется csharp
public int tickrate = 66; //66 тиков в секунду

void Start()
{
Time.fixedDeltaTime = (float)1/(float)66; (обязательно нужно float, ибо установится значение 0.00000001    и редактор зависнет сожрав оперативную память и используя проц на 100%)
}
 


К сожалению не сильно помогло , но спасибо большое за помощь. В движении игрока пытался менять значения fixedDeltaTime на deltaTime , умножал на 10 и то и то. Ничего не помогло.
CubeSide
UNец
 
Сообщения: 24
Зарегистрирован: 12 сен 2018, 23:20

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение seaman 27 фев 2019, 19:39

Попробуй поставь интерполяцию у Ригидбоди.
Изображение
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение CubeSide 27 фев 2019, 19:47

seaman писал(а):Попробуй поставь интерполяцию у Ригидбоди.
Изображение

Она была включена
CubeSide
UNец
 
Сообщения: 24
Зарегистрирован: 12 сен 2018, 23:20

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение CubeSide 27 фев 2019, 20:07

seaman писал(а):Попробуй поставь интерполяцию у Ригидбоди.
Изображение

Спасибо за помощь.
Поменял с Interpolate на Extrapolate и вроде как перестало дергаться . Осталась одна маленькая проблема ,препятствия при приближении должны плавно увеличиваться(т.к становятся ближе к камере) , а они увеличиваются без сглаживания .
CubeSide
UNец
 
Сообщения: 24
Зарегистрирован: 12 сен 2018, 23:20

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение AngryCat 27 фев 2019, 21:04

CubeSide писал(а):
seaman писал(а):Попробуй поставь интерполяцию у Ригидбоди.
Изображение

Спасибо за помощь.
Поменял с Interpolate на Extrapolate и вроде как перестало дергаться . Осталась одна маленькая проблема ,препятствия при приближении должны плавно увеличиваться(т.к становятся ближе к камере) , а они увеличиваются без сглаживания .

Используй вместо этого: camer.transform.position = new Vector3(0, 22, transform.position.z - 10 ); , Vector3.Lerp(); - будет плавно)
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: Дергаются препятствия при движении игрока (Runner)

Сообщение CubeSide 27 фев 2019, 21:44

AngryCat писал(а):
CubeSide писал(а):
seaman писал(а):Попробуй поставь интерполяцию у Ригидбоди.
Изображение

Спасибо за помощь.
Поменял с Interpolate на Extrapolate и вроде как перестало дергаться . Осталась одна маленькая проблема ,препятствия при приближении должны плавно увеличиваться(т.к становятся ближе к камере) , а они увеличиваются без сглаживания .

Используй вместо этого: camer.transform.position = new Vector3(0, 22, transform.position.z - 10 ); , Vector3.Lerp(); - будет плавно)

Благодарю .
CubeSide
UNец
 
Сообщения: 24
Зарегистрирован: 12 сен 2018, 23:20


Вернуться в Почемучка

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

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