|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.03.2009, 21:21 | #231 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Все именно так как и описал выше, ...ситуация один в один. Позиция в массиве - это не самый главный показатель присутствия на карте объекта. Это привязка к модели, модель - штука не визуальная, а вот смещение - это основной показатель, где графически расположен объект. Разбираем рисунки. Оба объекта одновременно идут навстречу друг к другу. Как известно, обработка объектов производится в цикле по очереди. Первым ячейку замет тот объект, что в списке объектов записан первее, ...сразу он получит координаты этой ячейки, но отрицательное смещение равное половине размера реальной клетки карты. Визуально он будет на пол пути до центра клетки, но по списку в этот такт обрабатывается следующий объект. В момент, когда смещение позволяет выполнить переход на клетку выше, условие видит, что клетка уже занята. В этот момент нужно останавливать движение нижнего объекта. В результате, верхний объект займет пустую ячейку массива, а нижний в массиве останется на том же месте, но графически по смещениям они встретятся на середине и остановятся.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
11.03.2009, 14:35 | #232 |
Регистрация: 08.03.2009
Сообщений: 7
|
Beermonza, это теперь понятно... спасибо обьяснил на пальцах))... а если предположить что к примеру верхний обьект идёт слева или справа а нижний двигаеться так же... ведь когда они начнут двигаться в одну и ту же клетку то получиться что они будут "наезжать" друг на друга углами(графически)??? ... если это так то что делать в такой ситуации???
|
11.03.2009, 14:58 | #233 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Maxadal, обрати внимание, ...я в предыдущем посте употребил фразу "...условие видит, что клетка уже занята." - это система "радиуса обзора". Т.е. обработка каждого объекта включает в себя проверку соседних клеток и смещений объектов, что в них находятся. Это часть системы поиска пути. Частный случай, когда "верхний объект идёт слева или справа, а нижний двигается так же", как ты предположил, первый должен остановиться, если графическое смещение второго уже не позволяет первому пройти. Если пройти еще можно, то первый будет идти, а второй "наткнувшись" на недопустимое смещение первого, остановится, будет ждать когда путь освободится, или начнет обходить, ...но это уже к полноценной системе "поиска пути" относится. StarCraft припоминаешь? ...как там танк может проехать между двумя строениями людей, наехав гусеницами на спрайт строения ...недочет небольшой, ...да кому это вообще интересно ковырять, игра-то хит!
А что за стратегия, вид сверху, или изометрия?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
11.03.2009, 15:09 | #234 |
Регистрация: 08.03.2009
Сообщений: 7
|
Я ещё на "измене"... ))) ... охота конечно изметрию... но с другой с тороны стоит попробовать что полегче... первый раз игру пишу до этого с графикой мало работал... хочу курсовой себе на такую тему попробовать написать ... теперь вот сижу думаю, что использовать DirectX или обойтись стандартными возможностями... спасибо за помощь...
|
14.03.2009, 18:41 | #235 |
Пользователь
Регистрация: 27.01.2009
Сообщений: 97
|
за что функция отвечает?
Учусь использовать canvas по урокам, которые предоставлены в этой теме. В посте № 105 приведен пример игры, в которой шарик плавно перемещается по карте из клеток, созданной из массива. Разбираю код. Всё ясно кроме назначения этой функции:
Код:
|
14.03.2009, 20:27 | #236 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
128 и 129 - это код не клавиши, а что клавиша с кодом key нажата, 128 - клавиша нажата четный раз, 129 - нечетный раз, оба значения - "факт, клавиша нажата". Также для не нажатой клавиши значение 0 и 1.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
15.03.2009, 14:31 | #237 |
Пользователь
Регистрация: 27.01.2009
Сообщений: 97
|
Теперь всё стало ясно. Спасибо
|
17.03.2009, 09:30 | #238 |
Регистрация: 08.03.2009
Сообщений: 7
|
Кто знает как можно вывести часть спрайта в DirectX без использования directdraw ???...
|
17.03.2009, 11:30 | #239 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
Maxadal, к сожалению никак. Но если сильно нужно, то можно программно разделить одну большую текстуру на несколько маленьких или заранее раздробить на несколько файлов.(если Direct3D имелся ввиду)
|
17.03.2009, 11:40 | #240 |
Регистрация: 08.03.2009
Сообщений: 7
|
Да я имел ввиду Direct3D... просто я незнаю как мне сделать прокрутку игровай карты если использовать DirectX ... и чтобы можно было невыводить часть спрайта... я просто незнаю как тогда организовать интерфейс меню в игре??? и вывод карты с прокруткой...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хорошие уроки | Render | Общие вопросы Delphi | 9 | 15.09.2012 07:13 |
Акцесс вопросы новичков | Yaga | Помощь студентам | 4 | 02.06.2008 00:16 |
Учебники для новичков в програмировании | Рар | Общие вопросы Delphi | 6 | 08.01.2007 08:07 |