Доброго времени суток.
Суть проблемы: есть массив с двумя группами объектов:
1 группа - sprite renderer + boxcollider2d(trigger);
2 группа - boxcollier2d(trigger);
При старте сцены копирую в list и использую оттуда.
for (int i = 0; i < poolFloor.Length; i++)
{
GameObject setFloor = (GameObject)Instantiate(poolFloor[i]);
setFloor.SetActive(false);
pooledFloor.Add(setFloor);
}
В апдейте простой скрипт, который двигает объект от правого конца камеры к левому через translate(deltaTime), выключая объект за левым концом камеры и включая возле правого.
void Update () {
maxX = width * -0.5f;
speed = -5f - Time.timeSinceLevelLoad * 0.07f; //скоротсь
for (int i = 0; i < pooledFloor.Count; i++) {
if (pooledFloor [i].activeInHierarchy) {
polledTransformObject[i].Translate(Vector3.right * speed * Time.deltaTime); //двигаем объект
float floorWidth = pooledBoxCollider[i]; //длина объекта(закеширавно в start())
float floorRight = polledTransformObject[i].position.x + floorWidth; //вычисляем крайнюю правую точку объекта
if (floorRight > maxX) {
maxX = floorRight; //находим самую большую точку X
}
if (floorRight < cameraLeftX - 1) {
pooledFloor [i].SetActive (false); //если объект вышел за левый край камеры, то выключаем
}
}
}
if (maxX < cameraRightX+1) {
NeedNew (); //если максимальная Х меньше правого конца камеры, активируем новый объект
}
}
Но все это движение идет рывкам с самого начала, то есть какое-то время гладко, какое-то огромными рывками. В профайлере показывал огромны скачки gfx.waitforpresent, походил по забугорным форумам, по советам включил vsync и уменьшил размер графики, теперь папка с графикой весит 700кб, в юньке склепал ввсе в два атласа: ui и main. Но ситуация на вид вообще никак не изменилась, разве что движение стало более размытым из-за vsync.
В чем еще могут быть причины проблемы?
P.S. Движение дергается как в редакторе, так и на тестовом lumia 535.
Как сейчас выглядит профайлер и настройки:
графика pixel art, настройки пробовал разные, но все одно и то же: