2014-10-09 2 views
2

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

Это часть моего кода, чтобы, возможно, помочь вам понять, что я имею в виду

WIDTH = Gdx.graphics.getWidth(); 
    HEIGHT = Gdx.graphics.getHeight(); 

    camera = new OrthographicCamera(); 
    camera.setToOrtho(false, 800, 480); 

Что произойдет, если я изменить эти значения? Что бы лучше их изменить?

Я читал уроки, но они действительно не говорили об этой части.

Должен ли я сделать что-то сложное, чтобы мои окрашенные изображения выглядели прилично на всех устройствах?

EDIT:

Это, как я в настоящее время реализовать облако в моей игре:

public class AnotherScreen implements Screen{ 

Polygon cloudPoly; 
Texture cloud; 

    @Override 
public void render(float delta) { 

    batch.setProjectionMatrix(camera.combined); 

    batch.begin(); 
    renderBackground(); 
    batch.draw(cloud,cloudPoly.getX(),cloudPoly.getY()); 
    batch.end(); 

    } 

    @Override 
public void show() { 
    cloud = new Texture(Gdx.files.internal("assets/textures/cloud.png")); 
      cloudPoly = new Polygon(); 
    cloudPoly.setPosition(MathUtils.random(350,600),MathUtils.random(380,440)); 

    // theses vertices are just a little square atm 
    float[] cloudVertices = new float[] { 
      0,0, 
      0,20, 
      20,20, 
      20,0 
    }; 
    cloudPoly.setVertices(cloudVertices); 
    } 

}

Облако изображение имеет ширину 256p и высоту 128P, когда я установил «камеру. setToOrtho (false, 800, 480); разве это облако всегда останется в пропорции?

Прошу прощения, если я неясен, я новый программист, и мой английский может быть лучше, любите вы, за то, что остаетесь со мной!

+0

Рассмотрите возможность присвоения имен вашим единицам. 800x480 что? метров? дюймов? Какие устройства подходят для вашей игры? – Xoppa

+0

'getWidth' и' getHeight' дают вам размер экрана в пикселях. Установка ширины и высоты камеры устанавливает видимую область вашего мира, но устройства могут быть любыми, как вам нравится, например Xoppa. Если вы используете box2D, то метры - хороший выбор. Установленный 800x480 будет растянут, чтобы соответствовать экрану, независимо от размера и соотношения сторон устройства. Поэтому, если вы просто выбираете фиксированные значения, подобные этому, он будет искажен на некоторых устройствах. Посмотрите документацию libgdx в видах, которая обрабатывает эту проблему. – Tenfour04

+0

hmm okey, так что .. Я не должен использовать фиксированные значения, чтобы он выглядел хорошо на всех устройствах? Я буду читать в видовых экранах, но, есть ли способ показать мне пример того, как не использовать фиксированные значения? Если я сделаю изображение в фотошопе размером 32x32 пикселя, как правильно реализовать этот образ? Прямо сейчас я просто импортирую его, и если размер неправильный, я меняю его в Photoshop, кажется, что это неправильно – user3486059

ответ

3

ли изображения, которые я нарисовал, растягиваются, или они остаются маленькими даже на больших планшетах?

Одна из величайших особенностей libgdx заключается в том, что она позволяет вам делать то, что вам нужно. Таким образом, это действительно ваш выбор. С этим фрагментом

WIDTH = Gdx.graphics.getWidth(); 
HEIGHT = Gdx.graphics.getHeight(); 

camera = new OrthographicCamera(); 
camera.setToOrtho(false, WIDTH, HEIGHT); 

У вас будет другой размер видового экрана в каждом размере экрана. Таким образом, ваши изображения останутся маленькими.

В другой стороны, если использовать предопределенные значения для окна просмотра, как:

WIDTH = 800; 
HEIGHT = 480; 

camera = new OrthographicCamera(); 
camera.setToOrtho(false, WIDTH, HEIGHT); 

Вы получите тот же окно просмотра для каждого экрана и изображения будут растягиваться занимать то же место в каждой оси. Это не обязательно будет одинаковым для каждой оси. Таким образом, идеальное квадратное изображение на одном экране может выглядеть как прямоугольник на другом экране с другим соотношением x-y.

Существует третий вариант, вы можете исправить одну сторону и дать возможность вычислять другую, поэтому вы сохраняете соотношение ваших изображений (квадрат остается квадратным). Вы должны решить, какая будет фиксированная сторона. Для такой игры, как Super Mario Bros я бы порекомендовал вам зафиксировать высоту и рассчитать ширину:

HEIGHT = 480; 
WIDTH = (Gdx.graphics.getWidth()/Gdx.graphics.getHeight())*HEIGHT; 

camera = new OrthographicCamera(); 
camera.setToOrtho(false, WIDTH, HEIGHT); 

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

Итак, мой вопрос в основном состоит в том, что оптимальная ширина и высота для игры в libgdx?

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

Другой грязный способ имеет только один большой набор и позволяет изображениям уменьшаться в более низких разрешениях. Он выглядит лучше, чем обратный. Но некоторые люди думают, что это слишком грязно: p (не я, поэтому рекомендую).

+0

, но что вы сказали о «другом размере видового экрана в каждом размере экрана», что звучит неплохо, не означает ли это все снимки будут выглядеть одинаково на всех вихревых экранах, или это может быть наоборот? – user3486059

+0

Это означает обратное. – Lestat

+0

Когда я создал игру, я использовал для выбора размера с метрами в голове. Если я хочу видеть около 80 м в x и 45 м в y, я создал «камеру» с окном просмотра 80 и 45. Затем я создал объекты, снова с метрами в голове (у человека был размер из 2 в у, так как он составляет около 2 м в высоту). Это неправильный путь в вашем обращении? – Springrbua

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