Делаю 2d типа платформер или раннер, то есть на сцене player и платформы. Платформы дергаются при движении. Движение осуществляю всеми возможными способами:
1, Передвигаю player за ним следит CinemachineVirtualCamera (при слежении main.camera всеми возможными способами результат одинаковый)
Двигаю методом rb.velocity или transform.position c *Time.deltaTime и *Time.FixedDeltaTime и без
Делаю это в FixedUpdate, Update, Lateupdate
Player висит в воздухе и не прикасается к платформе
Результат одинаковый - дергается.
2, Передвигаю платформы, а player висит в воздухе и не двигается, камера соответственно тоже.
Двигаю методом rb.velocity или transform.position c *Time.deltaTime и *Time.FixedDeltaTime и без
Делаю это в FixedUpdate, Update, Lateupdate
Результат одинаковый - дергается.
3, Создаю новый проект.
Создаю 1 объект, пишу один скрипт
{
public float horizontalMove = 10f;
Rigidbody2D rb;
void Awake()
{
Application.targetFrameRate = 60;
rb = GetComponent<Rigidbody2D>();
rb.constraints = RigidbodyConstraints2D.FreezeRotation;
}
private void FixedUpdate()
{
rb.velocity = new Vector2(horizontalMove, rb.velocity.y);
}
}
При движении спрайт иногда подергивается как на компьютере, так и на телефоне.
Application.targetFrameRate = 60; при других значениях, например 120 результат одинаковый
Quality Vsync Count = Don't Sync для андроид, при других настройках результат не меняется.
Fixed Timestep = 0,0143 или 0,02 или даже 0.002 на результат не влияет
Отключение Event System и Canvas не влияют.
После записи видео с 60fps с компьютера определил что происходит:
При равномерном движении спрайты должны сдвигаться каждый кадр на 1*N пикселей.
То есть смещение должно происходить каждый кадр допустим на 10 пикселей: 10-10-10-10-10-10-10-10-10
А происходит так, что иногда не отрисовывается изменение положения, а потом догоняет.
То есть смещение происходит не каждый кадр, а иногда не смещается, а потом смещается на две позиции: 10-10-10-10-10-00-20-10-10-10
Выглядит это как подергивание.
И это происходит не с постоянной периодичностью, а иногда, то есть может за 5 секунд один раз дернуться, а потом за две секунды 5 раз моргнуть.
Это видно на компьютере и при билде на телефон.
Но при касании экрана телефона - чудесным образом все двигается гладко, никаких подергиваний!!!
Только отпускаю касание и подергивания возвращаются.
Касания нигде никак не обрабатываются.
Что я не понимаю? Что еще попробовать? Помогите что мне делать, или это нормально так и должно быть?