XNA 2d аркадная игра спрайт следовать - PullRequest
2 голосов
/ 09 декабря 2010

Я собираюсь сделать игру наподобие XNA, например "Platformer1", которая поставляется с XNA. Но мне нужны более длинные уровни, которые не помещаются на экране (например, уровни Super Mario). Как я могу управлять таким уровнем? Нужно ли использовать 2d камеру, которая следует за спрайтом? Если я делаю так, как я могу загрузить уровень? Я немного сбит с толку, и я не уверен, смогу ли я объяснить свою проблему ясно. Надеюсь, кто-нибудь может помочь?

Ответы [ 5 ]

3 голосов
/ 10 декабря 2010

Учебное пособие на основе Стартового комплекта Platformer в MSDN содержит шаг Добавление уровня прокрутки , который проведет вас через создание более длинных уровней.Учебник очень подробный, я очень рекомендую его.

Я не смог найти учебник в разделе для XNA Game Studio 4.0 , но различия должны быть минимальными.Согласно комментарию внизу страницы, все, что вам нужно изменить, это заменить

spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None, cameraTransform);

на

spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise, null, cameraTransform);

в коде учебника.

2 голосов
/ 10 декабря 2010

Если вы хотите создать игру с боковой прокруткой, я бы посмотрел на прокрутку с параллаксом.Быстрый Google / Bing поможет вам найти много учебников.Кроме того, еще один полезный совет - искать на YouTube видео XNA, если у многих авторов есть свой исходный код.

Вот ссылка на Microsoft Parallax Scrolling .

1 голос
/ 09 декабря 2010

Я проделал приличную работу в XNA, и из моего опыта есть 2 способа нарисовать 2D-сцену:

1) Строго 2D. Этот метод намного проще, но имеет несколько ограничений. По сути, здесь нет «камеры», все, что вы делаете, это перемещаете все под фиксированную 2D «камеру». Я говорю «камера» в кавычках, потому что камера исправлена ​​(насколько я знаю). Преимущество в том, что это легко, недостаток в том, что вы не можете легко увеличивать или уменьшать масштаб или делать другие эффекты камеры.

2) 2D в 3D. Настройте 3D-мир с 2D-плоскостью. Это более гибкий инструмент, но с ним также сложнее работать, потому что вам потребуется настроить 3D-мир и 3D-камеру. Если это ваша первая попытка сделать игру, я настоятельно рекомендую против этого метода.

Я действительно знаком только со строго 2D-методом, и вам нужен список объектов карты, имеющих 2D-координату. Вы также хотели бы сохранить, какой раздел карты вы смотрите, я делаю это с помощью Rectangle или Vector2, в котором это хранится. Это значение будет двигаться вперед по мере продвижения персонажа. Затем вы можете взять координаты объектов 2D-карты и вычесть (X, Y) верхнего левого угла того, на что вы смотрите, чтобы определить положение экрана на объекте. Итак:

float screenX = myMapObject.X - focusPoint.X;
float screenY = myMapObject.Y - focusPoint.Y;

Еще одна вещь, которую стоит отметить: используйте поплавки или Vector2 / 3 для хранения локаций, вы можете и не подумать, что это требуется сейчас, но это будет не так.

Возможно, это излишне, но мой SF-проект использует XNA для рисования строго 2D-сцены, которую вы можете перемещать: http://sourceforge.net/projects/asteroidoutpost/

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

1 голос
/ 09 декабря 2010

Звучит так, будто у тебя впереди несколько проблем.

Но мне нужны более длинные уровни, которые не помещаются на экране (например, уровни Super Mario). Как я могу управлять такого рода уровнями.

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

Да, вам, вероятно, понадобится «камера». Это может быть так просто, как рисование определенного диапазона этого массива или более функциональной камеры, которая использует преобразования для уменьшения масштаба и трансляции по вашему уровню.

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

0 голосов
/ 10 декабря 2010

Посмотрите учебники Ника Грейвелинса. Они мне очень помогли, когда я только начинал - действительно стоит посмотреть, как много узнать о 2D-играх.

Все видео сейчас на YouTube здесь

...