2014-09-30 2 views
3

Недавно я переключился с использования целых чисел array в качестве моего экрана на Java для использования библиотеки. Библиотека, которую я использую, - LibGDX, и преобразование для меня совсем другое. Большинство вещей, которые я уже начал получать, и я все еще сам пишу код.Java & LibGDX: диапазон рендеринга диапазона Sprite

На данный момент мне любопытно, могу ли я ограничить диапазон рендеринга Sprite и любого другого фактора рисования, например, если спрайт застрял на полпути из коробки, это не отразило бы часть что торчит (как так :)

Example of Rendering in a Range
есть ли способ сделать в определенном диапазоне, и если он частично из диапазона, он не делает то, что находится вне диапазона, или я должен сам это сделать?

ответ

0

Вы можете сделать простую «обрезку» прямоугольника с помощью LibGDX ScissorStack.

Поскольку OpenGL - это состояние и многие кеширование API-интерфейсов LibGDX, обязательно выполните «промывку» или «завершение» ваших партий в пределах диапазона ножниц. См. libgdx ScissorStack not working as expected и libgdx Cutting an image

0

Если я не пропустил вас, вы ищете camera.
camera позволяет определить Viewport (размер), и вы можете видеть только вещи внутри этого Viewport.
Вы также можете переместить его, чтобы увидеть другие части мира.

Например:

OrthographicCamera cam = new OrthographicCamera(80, 45); 

Это определяет camera, который showes вам 80 единиц в х и 45 единиц в у. По умолчанию P (0/0) находится в середине экрана, поэтому в этом camera показаны объекты от -40 до +40 в x и от -22,5 до + 22,5 в y.
Вы можете перемещать его, так что P (0/0) находится в левом нижнем углу:

camera.position.x = -40; 
camera.position.y = -22.5; 
camera.update(); 

Это должно переместить камеру влево на 40 единиц и вниз на 22,5 единиц, так что P (0/0) - левый нижний угол. Не забудьте вызвать update(), поскольку это пересчитывает матрицу проекции и просмотра.

Наконец, чтобы сделать с этим camera, вам необходимо установить SptieBatch s projectionMatrix к одному из camera:

spriteBatch.setProjectionMatrix(camera.combined); 

Теперь вы можете использовать эту SpriteBatch рисовать.
Вы также должны рассмотреть se ViewFrustum-Culling, а это значит, что вы не рисуете вещи из camera, потому что они никогда не появятся на экране, но призыв на вызов стоит некоторую производительность.

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