Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 23:30   #1
[MI_nor]
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 94
По умолчанию Скроллинг изометрической карты

Люди, как реализовать? Просто скроллинг изометрии я могу сделать играясь с координатами перемещения мыши, но тут возникла проблема. Если размер карты слишком велик, то возникают ощутимые тормоза, в таком случае эту пролему можно решить по принципу "рисуем только то что видим". И тут возникла проблема. Как задать начальный и конечные тайлы для рисования? В прямоугоольной системе все просто, для минимумов делим перемещение на размер тайла, для максимумов к минимуму плюсуем частное от деления размера экрана на размер тайла, а для изометрии как?
[MI_nor] вне форума Ответить с цитированием
Старый 08.03.2011, 02:45   #2
[MI_nor]
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 94
По умолчанию

2й день уже мучаюсь с этим вопросом, неужто никто не знает?
[MI_nor] вне форума Ответить с цитированием
Старый 08.03.2011, 15:19   #3
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Если экран смещается таким же образом как в стратегии, т.е. независимо от главных/выделенных объектов, то каждый сдвиг карты по оси прибавляет или отнимает от переменной StrMapX (и/или StrMapY) единицу. Далее к этим переменным прибавляются статические значения числа клеток карты, вмещающихся на экране (EndMapX := StrMapX + RangeX и/или EndMapY := StrMapY + RangeY). Далее цикл типа:

Код:
For i := StrMapY to EndMapY do
  Begin
    For j := StrMapX to EndMapX do
      Begin
        ...
      end;
  end;
Это грубый скроллинг. Чтобы был попиксельный, нужно водить дополнительные переменные DispX и DispY с условием на переполнение (лимит - размеры клетки), при истине - задавать сдвиг для StrMapX и StrMapY.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 09.03.2011, 12:48   #4
[MI_nor]
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 94
По умолчанию

Но это не изометрический скроллинг, а скроллинг прямоугольной карты.
[MI_nor] вне форума Ответить с цитированием
Старый 09.03.2011, 14:10   #5
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Насколько я знаю, один от другого не отличается. Ведь карта, будь она хоть прямоугольной, хоть изометрической, основывается на одной и той же матрице.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скроллинг изометрической карты [MI_nor] Помощь студентам 0 07.03.2011 18:32
Игра на изометрической плоскости DeKot Gamedev - cоздание игр: Unity, OpenGL, DirectX 69 17.07.2009 23:27
скроллинг Chief Паскаль, Turbo Pascal, PascalABC.NET 1 09.06.2009 19:13
Скроллинг Sanek777 Общие вопросы Delphi 2 11.09.2008 20:05
скроллинг kl45gp JavaScript, Ajax 0 24.03.2008 23:29