2013-05-14 2 views
0

Я делаю игру (libgdx & box2d) со случайно генерируемыми планетами, имеющими небоскребы на них - см. Изображение ниже.Текстура Случайно сгенерированные и размерные области

Небоскребы случайны в своем положении, ширине и высоте. Теперь я ищу лучший способ их текстуры.

Это общий вопрос о том, как наилучшим образом разрешить текстурирование объектов случайного размера, вам не нужно указывать код, хотя вы можете.

Какие у меня есть варианты? Сделайте небольшие текстурные квадраты и выложите их? Растянуть их? Процедурно сгенерировать их (возможно ли это для текстуры, подобной небоскребу, - серый квадрат для базового и черного/желтого окон с подсветкой/без света)? Что я должен учитывать?

Я действительно не знаю, как это сделать в данный момент. Любые идеи приветствуются!

Спасибо!

Jonas

Planet with Skyscrapers

Успели сделать сделать это с растяжением - теперь только используя одну текстуру для всех размеров, но я изменю это. stretched textures over box2d objects

ответ

1

Как вы уже сказали, у вас есть много возможностей для решения этой проблемы. Streching часто не выглядит красивым, если вы близки к ним. Но если они уйдут, это может быть хорошим решением. на мой взгляд, для генерации тех, кому нужно время, я думаю, и это не очень хорошая идея для игры. Вам даже нужно много писать, и они всегда выглядят одинаково.

Я думаю, что черепица невозможна, потому что ваш skytower не всегда находится на основе плиток. Так, например, вы получили 32px Tiles, а ваша башня высотой 53px, она не работает хорошо, потому что вам нужно будет растягивать/вырезать или такую ​​одну из плиток.

Я бы взял фильтр с хорошим фильтром. Получите больше 1 картины для этого, поэтому, если у вас есть большие башни, также сделайте более крупную картинку для лучшего решения. Вы должны заботиться о ширине и высоте. Вы не должны очень хорошо нажимать на очень широкую башню, а также должны укладывать тонкую башню в широкую. Вы также можете рандомизировать его немного, чтобы у вас были разные картинки.
Пример для фильтра:

// we set the linear texture filter to improve the stretching 
splashTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 

From this tutorial
Также обратите внимание на эту запись из libgdx: Know Your Texture Filters!


Но это только мое мнение.


Чтобы узнать Фильтр используется по умолчанию принимают взглянуть на Texture методы.

getMagFilter(); 
getMinFilter() 

потому, что вы установили фильтры, как это:

setFilter(Texture.TextureFilter minFilter, Texture.TextureFilter magFilter) 
+0

Спасибо вам, BennX. Вы писали что-то о растяжке с помощью «хорошего фильтра». Не могли бы вы рассказать о том, что вы подразумеваете под этим? Я очень новичок в графическом/игровом программировании, поэтому указатель в правильном направлении будет высоко оценен.Большое вам спасибо за ваше время! – Jonas

+0

Я добавил небольшой пример. Вы можете установить фильтр на изображения, чтобы они могли ошпариваться разными способами. С некоторым фильтром вы можете получить плохой результат, но с некоторыми другими, возможно, это действительно хорошо. Взгляните на Enum TextureFilter, что он предлагает. – BennX

+0

Спасибо, BennX! Я проверю это сегодня вечером! – Jonas