Как мне сделать мой анимированный Texture2D в трехмерном мире в XNA4.0? - PullRequest
1 голос
/ 27 октября 2010

Как я уже изучал, есть 2 способа рисовать в xna;используя spritebatch или помещая предметы в трехмерный мир, а затем используйте камеру для рендеринга.

В настоящее время я работаю над своей игрой 2.5D.Я использую механику, которая делает более глубокий перевод спрайта медленнее, так что похоже, что в игре действительно есть глубина.

Однако, учитывая эффекты, то есть постобработку, это может быть проблемой, если я хочуОтобразить эти эффекты на средний уровень глубины, то есть отразить его на моем персонаже с глубиной = 0,5, в то время как на глубине = 0,8 есть дерево переднего плана.

Таким образом, я рассматриваю рендеринг своей игры в реальном 3D-мире.

Однако, поскольку я до сих пор искал способ поместить свой спрайт и анимировать его в 3D-миреЯ не нашел ни одного.(Возможно, потому, что я не знал правильных ключевых слов.) Ближайшие темы, которые я нашел, касаются PointSprite, который теперь удален из XNA4.0, поэтому я не смог реализовать его таким образом.

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

Спасибо, Dome

Ответы [ 2 ]

0 голосов
/ 27 октября 2010

Новое в XNA 4.0, SpriteBatch можно использовать с BasicEffect .

Этот пост в блоге объясняет это . Он также предоставляет некоторый пример кода, который имитирует функциональность SpriteBatch по умолчанию через BasicEffect, но вы можете передать свои собственные матрицы для трехмерного мира.

В частности: ваша «мировая» матрица опишет положение плоскости, где нарисованы спрайты, в трехмерном пространстве. Матрица «view» будет описывать вид вашей камеры на мир. А матрица «проекта» будет матрицей трехмерного проецирования (вероятно, от Matrix.CreatePerspective).

Кстати, название эффекта, который вы описываете, это " параллакс прокрутка". Это не то же самое, что настоящее 3D (и 2.5D - это тоже что-то новое).

Если вы хотите применить эффекты только к определенным слоям в сцене: вы можете либо применить эффект к этим спрайтам напрямую, передав эффект с помощью пиксельного шейдера в SpriteBatch.Begin. Или, если ваши эффекты на самом деле являются эффектами постобработки (то есть: применяются ко всему экрану), тогда вы можете использовать цель визуализации , чтобы визуализировать этот конкретный слой вне экрана, а затем визуализировать вернитесь на экран с вашим эффектом.

0 голосов
/ 27 октября 2010

Хитрость заключается в том, чтобы делать то, что вы делали до сих пор, вместо использования spritebatch для рисования «прямо» на экране, вместо этого вы рисуете 2d изображения на плоских «листах» в 3-м мире (с каждым «листом»", состоящий из двух треугольников, образующих квадрат).

Я бы посоветовал взглянуть на примеры построения квадов, текстур и, возможно, визуализации целей на сайте create.msdn.com в качестве отправной точки.

...