Камера ,куб на фоне(имитирующий поверхность, без колайдера), дирекшн лайт, Холст , на котором 3 кнопки и виртуальный джостик. На самом персонаже скрипт передвижения, Capsule Collider и RigidBody с выключенным UseGravity. Скрипт передвижения HeroMove:
Синтаксис:
Используется csharp
void Update()
{
if (ManagerOfManagers._single._JoyStick.OutCoord != Vector2.zero &&//OutCoord является Vector2 направление джостика
lastMovement == movement)
{
isMoving = true;
var coord = ManagerOfManagers._single._JoyStick.OutCoord;
movement = coord * _speed * Time.deltaTime;
transform.position = new Vector3(transform.position.x + movement.x, transform.position.y + movement.y);//трансформ закеширован
lastMovement = movement;
}
else
isMoving = false;
}
{
if (ManagerOfManagers._single._JoyStick.OutCoord != Vector2.zero &&//OutCoord является Vector2 направление джостика
lastMovement == movement)
{
isMoving = true;
var coord = ManagerOfManagers._single._JoyStick.OutCoord;
movement = coord * _speed * Time.deltaTime;
transform.position = new Vector3(transform.position.x + movement.x, transform.position.y + movement.y);//трансформ закеширован
lastMovement = movement;
}
else
isMoving = false;
}
Весь этот скрипт максимально потребляет 0.06ms(чекал при помощи стандартного дип профайлера).
Вся проблема начинается когда FPS залочиваю до 60(для смартфонов). Тогда заметно что персонаж двигается мелкими-мелкими рывками, и иногда получаю какие то мини-фризы. В настройки Time я не лез, там всё по стандарту. Движение, как видите, не реализовано при помощи физики.
Вот пару скринов профайлера (кликабельны, там качество):
В чём же может быть проблема, подскажите пожалуйста.