我正在制作一款看起来像老式“杆位”(有点)的赛车游戏。
我从 50 个矩形创建我的道路(RoadFragment 是一个矩形,附加了两个附加的白色小矩形以模拟道路的路缘):
int y = 0;
int widthCut = 8; // 4 przy 100 prostokatach, 8 przy 50
for(int rectIndex = 0; rectIndex < rectangleCount; rectIndex++)
{
RoadFragment roadFragment = new RoadFragment(400, 0, 500, 300 / rectangleCount, RaceScene.vbom);
roadFragments.add(rectIndex, roadFragment);
this.attachChild(roadFragments.get(rectIndex));
roadFragments.get(rectIndex).setY(rectIndex * 6);
roadFragments.get(rectIndex).setWidth(500 - y);
y = y + widthCut;
}
在onManagedUpdate
场景中,我移动了那些片段:
timeToUpdate = timeToUpdate + pSecondsElapsed;
if(timeToUpdate > 0.00f){
timeToUpdate = 0;
for(int rectangleIndex = 0; rectangleIndex < rectangleCount; rectangleIndex++) {
roadFragments.get(rectangleIndex).setX(getBezierX((float)rectangleIndex, (float)rectangleCount, 400, 400, 400 + curveOffset));
}
}
正如您在每次更新中看到的那样,都会对每个片段进行计算,以根据贝塞尔曲线计算的因子移动它们。场景中还有一些其他的精灵:视差背景、玩家的汽车、其他一些汽车(但同时不超过两辆,其他很少。我总共绘制了 150 个矩形和大约 10 个精灵。
所以,在 Galaxy S5 上它看起来非常漂亮和流畅,但在像 Galaxy S3 mini 这样的旧手机上它会卡顿并且无法播放。问题是:有什么技巧、改变或想法可以用来让它更顺畅吗?