Разработка игр, странный эффект изображения при движении камеры - PullRequest
17 голосов
/ 06 декабря 2011

Я разрабатываю Side Scroll 2D Game, используя AndEngine

Game image

Я использую их расширение SVG (я использую векторную графику)

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

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

Game image 2

Это более или менее, как это выглядит в игре, где:

a) «ПЕРВЫЕ» изображения показывают квадрат, в то время как игрок движется (КАМЕРА) изображение выглядит какон должен

б) «ВТОРОЕ» то же изображение, но с этим странным эффектом », который выглядит как изображение, движущееся / размытое при перемещении камеры [преследующий игрока])

Мой друг сказал мне, чтоэто может быть труднопроблема с программным обеспечением:

"размытие, которое вы заметили, на самом деле является аппаратной проблемой.Некоторые телефоны «сглаживают» содержимое на экране, чтобы придать приложениям приятный вид.Я не знаю, экран это или графический процессор, но это не происходит на Samsung Captivate моей жены.Это происходит на моем Atrix и Xoom, хотя.Это действительно заметно в Xoom из-за большого размера экрана. "

Но, похоже, есть способ предотвратить это, так как я тестировал много похожих игр, где камера гоняется за игроком, и я не мог заметить такой эффект.

Есть ли способ отключить это в коде?


Я благодарен за предыдущие ответы, к сожалению, проблема все еще существует.

До сих пор я пробовал:

  • приведение (int) к методу setCenter, который выполняется в тестовой игре updateChaseEntity
  • с использованием изображений PNG вместо расширения SVG и вектораgraphic
  • разные TextureOptions
  • hardwareAcceleration

Если у кого-то есть другая идея, что может вызвать этот странный эффект, я был бы очень признателен за помощь - спасибо.

Ответы [ 5 ]

1 голос
/ 08 января 2012

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

Надеюсь, это поможет.

1 голос
/ 06 декабря 2011

Некоторые устройства (Xperia Play) кровоточат повсюду, пытаясь нарисовать вещи, которые движутся быстро. Например, красный значок в списке приложений оставляет размытие позади него. Вы можете попробовать аппаратное ускорение в манифесте (включить и выключить), чтобы увидеть, имеет ли это значение.

Вы, вероятно, получили бы тот же эффект, если бы не использовали SVG

0 голосов
/ 26 декабря 2011

Лучший способ отладки, это попробовать другой вид спрайта.Может быть, это просто медленное время отклика дисплея вашего устройства.Я также являюсь разработчиком Andengine и никогда не видел такого поведения.

Иногда вы исправляете дрожание с помощью FixedStepEngine, это может помочь.

Если вы можете опубликовать свой код, возможно, мы сможем вам лучше помочь.

0 голосов
/ 06 декабря 2011

Я не знаком с этим движком, но мне интересно, зачем вам использовать векторную графику для пиксельного художественного стиля.Я буду удивлен, если ваш персонаж на скриншоте действительно векторное искусство ... может быть, это текстура, импортированная в SVG?Когда-то я пытался использовать вспышку несколько раз, и я делал ту же ошибку ... Я не говорю, что это невозможно, но это не предназначено для создания пиксельной графики с помощью вспышки или любого другого векторного программного обеспечения.Существует причина, по которой большинство флеш-игр имеют похожий вид.

0 голосов
/ 06 декабря 2011

Похоже, это происходит из-за того, что камера движется с реальными приращениями, заставляя компоненты SVG опираться на нецелые границы, и рендерер SVG, создающий сглаживание, вступает в силу, чтобы продемонстрировать это. Попробуйте переместить камеру с целыми приращениями, приведя значения камеры к int.

...