iOS FPS низкая частота кадров при перемещении персонажа, профилировщик показывает Physics.Simulate требует времени процессора

Разрабатываем FPS игру для iOS. Персонаж игрока - это элемент управления от первого лица из стандартных активов (мобильный). Он имеет стандартный контроллер персонажа прилагается.

У нас есть 7 врагов на нашей сцене. У каждого врага есть некинематический RigidBody. Враги двигаются к игроку, когда игрок рядом

Сцена имеет 5500 треугольников / 6000 верт. У нас есть 20-25 кадров в секунду на iPhone 4, когда игрок не двигается. Когда игрок начинает двигаться, количество кадров в секунду падает до 7-10.

Кроме того, мы перемещаем врагов, изменяя их преобразование напрямую, а не вызывая AddForce.

В профилировщике мы видим, что Physics.Simulate занимает около 60%-70% процессорного времени, когда игрок движется.

Как мы должны это исправить?

Мы новички в Unity и 3D. Извините за мой английский.

1 ответ

Решение

Согласно документации Unity, использование движка Physics в устройствах iOS снижает производительность, поскольку в значительной степени зависит от операций с числами с плавающей запятой. http://docs.unity3d.com/Documentation/Manual/iphone-basic.html

Чтобы повысить производительность, как следует из документации, избегайте использования коллайдеров сетки, установите низкую фиксированную частоту кадров и включите Rigibody Interpolation.

Могу ли я сделать игру, которая использует тяжелую физику? A: Физика может быть дорогой на iOS, если она требует большого количества вычислений с плавающей запятой. Вы должны полностью избегать MeshColliders, если это вообще возможно, но их можно использовать, если они действительно необходимы. Чтобы повысить производительность, используйте низкую фиксированную частоту кадров, используя Edit->Time->Fixed Delta Time. Рекомендуемая частота кадров 10-30. Включите интерполяцию жестких тел для достижения плавного движения при использовании низкой частоты кадров физики. Чтобы достичь абсолютно плавной частоты кадров без колебаний, лучше выбрать фиксированное значение deltaTime на основе средней частоты кадров, которую ваша игра получает на iOS. Рекомендуется либо 1:1, либо половина частоты кадров. Например, если вы получаете 30 кадров в секунду, вы должны использовать 15 или 30 кадров в секунду для фиксированной частоты кадров (0,033 или 0,066)

Другие вопросы по тегам