![]() |
Изометрия и механизм определения столкновения в играх
Здравствуйте!
Каков принцип написания подобных вещей: в изометрии представлено некое пространство и там клавишами курсора перевигаем объект, а из хмл грузится инфа о том, где есть какие стены или другие объекты, и этот наш объект знает что нельзя пройти сквозь стену и пр. --------- хотелось бы хотябы в общих чертах. или может какие примеры есть или сырцы |
ну например так :D
Код:
this._y += 40; |
http://vl.nn.ru/graf/test_graf.html
Вчера только повернул карту (изометрия). |
to iNils:
Спасиба. буду разбираться.... если можно хотябы немножко коментариев добавьте )) to Cvazimodo: красива... а может кто-нибудь ещё набросает алгоритм ... вкратце так .. )) |
Цитата:
|
Я делаю так (в моём примере):
есть админка для рисования карт, там каждой клетке соответствуют 8 клеток соседей (это максимум; для крайних клеток, естественно, меньше). Сохраняется в виде XML (как не буду говорить, это понятно). Для тех клеток, на которых есть препятствие я не ставлю ссылки на "соседей" и от "соседей", соответственно, на эту клетку тоже не ставлю ссылку. Это всё идёт в клиентскую часть. Есть массив (одномерный) объектов, типа: var Relations:Array = new Array(); Relations[0].id = "cell_10"; // уникальное имя для ячейки. зачем делал - не помню :) Relations[0].children = new Array(); // массив "соседей" - клеток, на которые я могу перейти. Relations[0].children[0].id // уникальное имя для ячейки-соседа Это примерный пример структуры. Можно оптимизировать, можно изменить, просто я делал разными алгоритмами пока не выбрал самый быстрый. |
Не понятно зачем хранить ссылки на соседей, они и так ясны.
|
Цитата:
К тому же, у меня одномерный массив, в нём тяжело определить ряд и колонку :) Все координаты этих ячеек формируются один раз в админке (при рисовании карты) и в клиенте просто подгружаются в указанные места без дополнительных расчетов. К тому же, используя систему "ячейка-сосед" можно делать большие переходы (ака телепортация)... В общем, мне так захотелось, это моя первая работа в подобном направлении, возможно и не самая правильная. |
Цитата:
|
Действительно, очень хороший пример. Спорить глупо :)
Если не возражаете, некоторые вещи позаимствую (может быть). Я, правда, до конца не разобрался, на работе тяжело отвлекаться. Дома вот попробую "разобрать" этот код по частям. Нет предела оптимизации :) |
| Часовой пояс GMT +4, время: 16:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.