Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 3,684
· Новый пользователь: headron
Последние фото
Эх, чуть не проспал закрытие.
Эх, чуть не проспал ...
Альбом: XNA Engine

GB
GB
Альбом: XNA Engine

South Park Coon & Friends
South Park Coon & Fr...
Альбом: XNA Games

Блоги
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
dampirik
» Реклама,статистик...
Chort
» XNA и StartCoroutine
Chort
» Curve Class
dampirik
» Реклама, статисти...
dampirik
» Увеличение скорос...
dampirik
» Реклама, статисти...
general
» Распаковка DxtCom...
general
» Как работать с XN...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Статистика посещений:

Просмотр темы
 Распечатать тему
Навигация по карте как в Civilization 3
HarkBack
#1 Распечатать сообщение
Опубликовано 16.02.2014 11:20:29
Младший специалист


Сообщений: 19
Зарегистрирован: 03.11.12

Здравствуйте! Думаю, Civilization 3 достаточно популярная игра для примера. Я хочу реализовать на вид простую навигацию по карте (её текстуре), с учетом не выхода за границы. То есть, если позиция камеры выходит за пределы карты в право по горизонтали, то камера незаметно переходит на левую часть и показывает участок другой стороны.

i.imgur.com/lgJ9C1B.pngi.imgur.com/zJ5Am6V.png

При этом будет отображаться не только карта, но и все актеры на ней + зум камеры. Вроде бы задача простая, но я не могу ни как понять, как её решить. Дублирование? Или нужно что то в камере настроить?
Подскажите пожалуйста.
 
general
#2 Распечатать сообщение
Опубликовано 17.02.2014 12:20:13
Аватар пользователя

Администратор сайта


Сообщений: 3788
Зарегистрирован: 10.02.09

что нужно скролить, только ползающую рамку на карте мира или отображение сектора?

Загрузить источник  GeSHi: C#
  1. internal class Class1
  2. {
  3. private int[][] map; // ...
  4.  
  5. private int worldWidth = 100; // условно размер мира
  6. private int sectorWidth = 30; // условно размер сектора
  7. private int mapX = 0;
  8.  
  9. private void Update()
  10. {
  11. mapX++; // скрол в право
  12. if (mapX >= worldWidth)
  13. {
  14. mapX -= worldWidth;
  15. }
  16. }
  17.  
  18. private void Draw()
  19. {
  20. int mx, my;
  21. for (int x = mapX; x < mapX + sectorWidth; x++)
  22. {
  23. mx = x;
  24. if (mx >= worldWidth)
  25. {
  26. mx -= worldWidth;
  27. }
  28. int tileID = map[mx][my];
  29. //...
  30. }
  31. }
  32. }
  33.  
Добавлено за 0.008 секунд, используя GeSHi 1.0.8.2


что то такое +my
Изменил(а) general, 17.02.2014 12:20:29
[dreamteam-mobile]
[dtimofeev.blogspot.com][c#][XNA][blog]
 
HarkBack
#3 Распечатать сообщение
Опубликовано 17.02.2014 18:15:54
Младший специалист


Сообщений: 19
Зарегистрирован: 03.11.12

Скорее отображение. с рамой вопрос потом сам решится. С массивами, что в показали, пример весьма подходящий для объектов. А что делать, если карта - одна большая текстура (800х600 например). Может использовать sourceRectange для выхода за границ, дублируя текстуру?
 
general
#4 Распечатать сообщение
Опубликовано 17.02.2014 18:53:49
Аватар пользователя

Администратор сайта


Сообщений: 3788
Зарегистрирован: 10.02.09

зачем?
в первом посте это игровое поле?

без адекватного и развернутого пояснения я не понимаю ситуацию...
[dreamteam-mobile]
[dtimofeev.blogspot.com][c#][XNA][blog]
 
dampirik
#5 Распечатать сообщение
Опубликовано 17.02.2014 20:09:08
Аватар пользователя

Ветеран


Сообщений: 957
Зарегистрирован: 21.02.10

Он хочет, при скроллинге карты (игрового поля) скажем до низу, в ее конце она не утыкалась, а появлялся её верх, тк сказать по кругу. У меня пока в голов только решения в лоб… не разу такой целью не задавался.
Изменил(а) dampirik, 17.02.2014 20:09:34
Блог - dampirik.blogspot...
 
HarkBack
#6 Распечатать сообщение
Опубликовано 17.02.2014 20:39:23
Младший специалист


Сообщений: 19
Зарегистрирован: 03.11.12

dampirik написал:
Он хочет, при скроллинге карты (игрового поля) скажем до низу, в ее конце она не утыкалась, а появлялся её верх, тк сказать по кругу. У меня пока в голов только решения в лоб… не разу такой целью не задавался.

Да, примерно так я и хочу. Когда камера доходит до нижней границы, то она незаметно перемещается в верхнюю. При этом граница заканчивается не тупиком, или черным фоном, а верхней части.
 
Chort
#7 Распечатать сообщение
Опубликовано 19.02.2014 12:47:18
Аватар пользователя

Администратор


Сообщений: 1296
Зарегистрирован: 16.02.09

хм... простого решения нет, все зависит от того как реализована прорисовка на данный момент. для себя такую карту разбил бы на квадраты (технология Google Search quadtree как например) и рисовал бы только те что попадают в камеру, а это уже проверить не проблема.
На вопросы отвечаю с головы. Ссылка на ответы или запускаю студию только в интересных случаях.
 
Flanir
#8 Распечатать сообщение
Опубликовано 19.02.2014 14:08:42
Младший специалист


Сообщений: 36
Зарегистрирован: 30.12.12

Загрузить источник  GeSHi: C#
  1. for (int i=0;i<count_y;i++)
  2. for (int j=0;j<count_x;j++)
  3. {
  4. sb.Draw(map[(i+sm) % count_Y,(j+sm) % count_x,].Tex,
  5. map[(i+sm) % count_Y,(j+sm) % count_x,].Pos,
  6. map[(i+sm) % count_Y,(j+sm) % count_x,].Color);
  7. }
Добавлено за 0.006 секунд, используя GeSHi 1.0.8.2

Как-то ведь так, если разбито на квадраты, ест-но дальше добавить скроллинг и выводить то что нужно:)
По модулю брать в общем надо текущие координаты, дабы зациклить пробежку по массиву
Изменил(а) Flanir, 19.02.2014 14:27:26
 
HarkBack
#9 Распечатать сообщение
Опубликовано 20.02.2014 20:48:26
Младший специалист


Сообщений: 19
Зарегистрирован: 03.11.12

Спасибо! Теперь понятно как это можно сделать.
 
Перейти на форум:
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

27.08.2014
Я умею немного на asp.net + html и css

22.08.2014
на ASP mvc 3 есть пару проектов. Могу помочь, если нужно. Обидно, если закроется Frown

21.08.2014
я тоже ноль

21.08.2014
Я в вебе только с php занимался да и то на уровне чтоб работало.

21.08.2014
Я в вебе полный ноль…

21.08.2014
Переводить его надо, хоть на ту же азуру. И двиг менять на что-то современное. Если есть веб-разрабы - можем скооперироваться. Один делать не буду.

21.08.2014
не знаю всех нюансов по оплате и все хорошее когда нибудь заканчивается

21.08.2014
А что случилось?

21.08.2014
похоже сайт будет работать до 28го числа

09.08.2014
Апи пока не видел. Но есть приложение в магазине Live Lock Screen BETA, так что думаю скоро будет

08.08.2014
Я про API для Update1. На нем работает это

08.08.2014
А что именно нужно? Чтото и сейчас открыто http://msdn.micro.
...105).aspx

06.08.2014
Кто-нибудь слышал об открытии доступа к Lock Screen Api?

31.07.2014
VPDExpress на базе MVS 2012, ни в какую не ловит исключения. Даже если их сам создаешь. И всех так?

25.07.2014
С днем системного администратора причастных к этой профессии! По случаю - тортик от жены

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,22 секунд 8,710,205 уникальных посетителей