Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Изометрическая сетка (как сделать?) (http://www.flasher.ru/forum/showthread.php?t=187448)

Tetraeon 20.11.2012 00:47

Изометрическая сетка (как сделать?)
 
Здравствуйте, задался вопросом как сделать изометрическую сетку для контроля за игровым полем. Подскажите пожалуйста с чего лучше начать, раньше не пробовал такое делать, как то обходился без нее, но похоже на ней все игры строятся... может ресурс подскажите какой где все разжевано?

bifidokk 20.11.2012 09:07

http://www.flasher.ru/forum/showthread.php?t=182390
http://www.flasher.ru/forum/showthread.php?t=152653

Tetraeon 20.11.2012 09:33

Предположим создал я 2 мерный массив - отобразил сетку, поместил в контейнер который деформировал в изометрическую форму, как лучше при помощи всего этого контролировать нахождение объектов в том или ином квадрате? hitTestObject? или есть способ получше?

Dip52 20.11.2012 19:34

Попробуй так:
Есть два массива: в одном находятся объекты, в другом координаты.
Через цикл, в котором будет массив с объектами, создаёшь внутри условие, которое проходит по массиву с координатами. Но я думаю, что в этом примере есть какая-то неправильность, до которой я пока что не могу догадаться. Кажется догадался: у определенного объекта будет определенный индекс. Так как я хочу сделать так: if(arrayObject[i].x == arrayCoordinates[i]), то сравнение будет с теми же координатами, а не сначала.

bifidokk 21.11.2012 09:09

Цитата:

Сообщение от Tetraeon (Сообщение 1105185)
Предположим создал я 2 мерный массив - отобразил сетку, поместил в контейнер который деформировал в изометрическую форму, как лучше при помощи всего этого контролировать нахождение объектов в том или ином квадрате? hitTestObject? или есть способ получше?

у меня используется гексагонная сетка. просто использую координаты самих гексов 0:0, 1:0, 0:1, 2:0 итд. по ним, зная размеры гекса, без проблем нахожу глобальные координаты. не пойму, в чем проблема контролировать? есть сетка 5 на 5 допустим. объект в координате 3:2 знаем размер шага сетки, знаем координаты сетки - переводим в глобальные ставим объект.

Tetraeon 21.11.2012 14:33

Я еще на занимался поиском координат объекта находящегося на сетке, но представляю пока что только 1 вариант: сканирование 2 мерного массива через 2-й цикл и проверку на соприкосновение через hitTestObject (правда косяк этого варианта в том что объект не должен задевать другие ячейки). С установкой нового объекта в определенную ячейку проблем нет.

expl 21.11.2012 17:04

Цитата:

Я еще на занимался поиском координат объекта находящегося на сетке
присваиваете x, y объеку при установке и всё, при перемещении в другую ячейку - меняете

bifidokk 22.11.2012 09:18

Не понимаю, зачем hitTestObject. Используйте сетку для определения конечных координат точек перемещения объекта, а не текущих. Есть начальная точка - ячейка, в которой находимся. Есть конечная - куда идем. Строим путь по ячейкам, далее можно вообще забыть про сетку, просто провести объект из начальной в конечную по построенному пути.

Tetraeon 22.11.2012 13:03

У меня задача сделать "конструктор карты" для этого я решил сделать сетку для учета свободных или занятых слотов. Объекты размещаемые на карте будут занимать разное количество ячеек как по X так и по Y. Я решил использовать в качестве маркера будущего объекта символ круга котрый будит занимать 1 яейку, при размещении этого символа и в зависимости от его типа будит идти проверка соседних ячеек (свободная или нет) если проверка пройдена будит установленна картинка объекта и все пересекающиеся ячейки будут "заполнены". Я пока только до такого варианта допер.

bifidokk 22.11.2012 16:41

легче ввести многомерный массив занятости, либо оптимизировать под это массив сетки.
например если сетка 10Х10, то получаем массив на 10 элементов, элемент каждого это еще массив на 10 элементов.

допустим начало сетки идет с левого нижнего угла, это координата 0:0. ставим в этот угол абстрактный дом, размером 2 на 1 получается он занимает клетки-точки с коордаинатами 0:1 и 1:1. берем и данные элементы в нашем массиве ствим в ноль, остальные элементы -1 , т.е. не заняты. таким образом вы всегда будете знать, какие ячейки заняты, а какие нет.

в этот массив можно даже ввести типы объектов, расположенные на карте. поищите книжку Flash Multiplayer Virtual Worlds там целая глава этому посвящена


Часовой пояс GMT +4, время: 11:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.