2015-03-14 3 views
0

Я разрабатываю 2d-игру; В настоящее время я разрабатываю систему перемещения камеры на карте, я использовал следующий метод: у моей камеры есть собственные координаты - x, y; У меня есть ArrayList со всеми моими спрайтами для карты с их координатами от 0 до mapSize, каждый спрайт имеет функцию Draw, которая выглядит просто какJava - Draw'ing вне рамки

g2d.drawImage (текстуры, GetX(), GetY(), GetX() + getSizeX(), y + getSizeY(), 0, 0, getSizeX(), getSizeY(), null);

Я всегда рисую все свои спрайты, не проверяя, видны они или нет; Есть ли на этом рисунке нагрузка на компьютер (при рисовании текстур, которые очень далеки от размера экрана)? Нужно ли мне проверять, является ли объект видимым перед рендерингом?

Моя основная функция DrawAll содержит():

public void DrawAll(graphics2D g2d){ 

    g2d.translate(-playerCamera.getX(), -playerCamera.getY()); 

    for (int i = 0; i < mapSprites.size(); i++) { 
     mapSprites.get(i).Draw(g2d); 
    } 

    g2d.translate(-playerCamera.getX(), -playerCamera.getY()); 

    drawSomeStrings, etc.... 

} 

Это не очень хорошо, потому что линии, которые были нарисованные после второго перевода может дергаться при перемещении экрана. Должен ли я давать перевод и выполнять координаты смещения вручную в каждой функции Draw \ sprite's Draw?

ответ

0

графика2D закрепит ваш рисунок. Так что это не сильно влияет. Если у вас много спрайтов, вам следует использовать SpatialIndex, чтобы выбрать, какой спрайт находится на экране. (https://github.com/aled/jsi)

+0

Thx для информации, я узнаю больше о пространственных индексах; но как насчет использования функции перевода? – Maxim

Смежные вопросы