2016-04-05 11 views
0

Похоже, что окно просмотра бесполезно, но я ПРОБЛЕМА, ЧТО-НИБУДЬ.Виджеты Libgdx

Например, я хотел создать игру, в которой у меня есть объект, и если я нажму слева или справа от экрана, я умру! Поэтому, если я использовал Gdx.graphis.getWidth() и 0, все будет работать нормально.

OK, но давайте настроим viewport = new ExtendViewport (500, 800, камера); Прохладный У меня нет виртуальных пикселей 500 и 800 ===> 5: 8 Затем я набираю логику для попадания в конечный экран, поэтому если object.x < 0 или object.x> 800 ----> object DIES !

Но теперь я начинаю игру на планшете с разрешением 1500 x 2000 ===> 3: 4, теперь все не так, весь экран перемещен влево, поэтому 0 все еще работает, но 800 а не конец правого края экрана.

Затем я использую FitViewport, и столкновение левого и правого края теперь перемещено из-за другого соотношения сторон.

Похоже, я могу использовать strechViewport или просто вручную кодировать материал ... Но я знаю, что чего-то не хватает, потому что у ЭТО ДОЛЖНО ИСПОЛЬЗОВАТЬ ЕГО ИСПОЛЬЗОВАНИЕ.

Поблагодарили бы за помощь!

+0

Судя по тому, что вы хотите сделать, вы думаете, что установка максимального предела для вашего окна просмотра поможет вам? проверьте api https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/viewport/ExtendViewport.html#ExtendViewport-float-float-float-float-, это может помочь вам ограничить размер окна просмотра – Fish

+0

Ну, установите немного макс? Я даже не могу достичь максимума ... Хотя теперь я делаю свои игры разными ... Я программирую PlayState, как вы играете в игру старомодным способом с Gdx.graphics.getWidth и getHeight(), все остальное из меню в вариант и прочее, которое я делаю с помощью ViewPorts, похоже, единственное решение – pigi

ответ

0

Прежде всего, на мой взгляд, хорошая привычка центрировать камеру в координатах (0, 0). Тогда у вас всегда будет -screenWidth/2 в качестве края левого края экрана и screenWidth/2 для правой стороны.

Во-вторых, вы не должны использовать координаты экрана непосредственно при использовании окна просмотра. Viewport имеет метод для преобразования в окно просмотра координаты экрана:

unproject(Vector2 screenCoords) 

он имеет также обратно методу

project(Vector2 worldCoords) 

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

+0

Проецирование полезно только для событий касания или нет? И когда соотношение сторон меняется, я затем использовал ExtendViewport, поэтому у меня есть фон по всему телефону, но фактическая часть экрана PLAYABLE отодвигается от LEFT и RIGHT EDGE SCREEN ... так что после того, как края будут как у - 50 и 550 вместо 0 и 500, я могу умножить все на aspect_ratio, но тогда кажется, что использовать ViewPort даже бесполезно. Что мне здесь не хватает? Не могли бы вы проверить мой код и рассказать мне, что мне не хватает здесь: http://pastebin.com/UY0BzBNp, класс SQUARE имеет только спрайт и hitbox – pigi

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