|
|
|||||
Регистрация: Nov 2007
Сообщений: 24
|
Сетка столкновений
Есть объект, который по нажатию мыши стреляет пулями. требуется проверять эту пулю на столкновения с другими объектами, этих объектов слишком много чтобы пользоваться полным перебором. единственный выход это использовать так называемую сетку. получится что проверять придется не все объекты а только те котрые находятся в клетке пули, а точнее в четырех соседних клетках(т.е. рядом с ней). сам алгоритм мне известен, у меня вопрос насчет реализации...
моя идея:создать трехмерный массив(т.е. матрица у каждого элемента которой будет свой массив или объект, в котором мы будем хранить ссылки на объекты, которые принадлежат этой клетке). я застрял на добавлении и удалении объекта в массив или объект. можете объяснить как это делать? и вообще как хранить ссылки на объекты которые принадлежат клетке? или подкиньте другую идею насет реализации. P.S. ссылк на перевод Nox Noctisa не давать. читал, там описано поверхностно. |
|
|||||
Modus ponens
|
Array.push() - добавить к концу,
Array.unshift() - добавить к началу Array.splice(указатель, количество элементов, чем заменить) - заменить\добавить\убрать в произвольном месте. Array.shift() - убрать первый элемент Array.pop() - убрать последний Object.prop = value - любое свойство объекта можно добавить просто так, ну или более замысловато - Object.addProperty("prop",setFunction,getFunction) Чтобы говорить конкретнее - надо видеть хотя бы простой пример того, что нужно сделать...
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Nov 2007
Сообщений: 24
|
Добавлять в массив я уже пробовал, но со временем массив разрастается. короче там не просто так тупо добавлять.
|
|
|||||
[+1 14.08.08]
[+1 20.08.08] |
чувак, среди программистов ясновидящих мало =)
ясно объясни в чем у тебя траблы. если у тебя 3х мерное пространство, то тебе нужен четырехмерный массив. 3 размерности массива - это оси x,y,z. Четвертая содержит список объектов с которыми ты проверяешь столкновение. это может быть и массив, по которому ты пройдешься в цикле, или , как подсказывает wvxvw (пальчы сломал набирая ник =)) просто экземпляр Object. На самом деле пример обычного хеширования. при желании можно взять и двумерный массив и делать смещение xPos+yPos+zPos или даже одномерный вообще. что ты добавляешь в массив, что он у тебя разрастается? пули? так их нужно удолять после столкновения.
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
Регистрация: Nov 2007
Сообщений: 24
|
вы совсем из меня дурака сделали) эт понятно что трехмерная(третье измерение-как бы хранилище). а пули я удаляю, но остаются пробелы и со временем массив разрастается, что не есть хорошо. например: есть массив из 20-ти объектов, удаляем 10-ый получится пробел и если так продолжать он разрастется, а это не хорошо. вы наверное предложите цикл фор ин, но он тоже будет замедлятся при разрастании массива и вообще не технично это как то так тупо с массива объекты удалять. вот я и спрашиваю, может кто нибудь знает какие алгоритмы или сталкивался с таким. в аттаче клип, для того чтобы ввести вас в курс дела) в сетку я буду заносить и соотвественно удалять танчики. у каждого клипа свой класс.
Последний раз редактировалось qwerter; 26.11.2007 в 21:20. |
|
|||||
Modus ponens
|
Ну, а чем скомпилированая флешка должна помочь?
Если удалять элемент из массива не заменяя, а именно удаляя - массив разрастаться не будет...
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Nov 2007
Сообщений: 24
|
Спасибо. Я просто примерно хотел показать в чем дело. Если надо могу и исходник.
|
|
|||||
Регистрация: Nov 2007
Сообщений: 24
|
grid=new Array; grid.length=_global.width/50; //делаем двумерный массив for (var i=0;i<grid.length;i++){ grid[i]=new Array; grid[i].length=_global.height/50; } //делаем трехмерный массив for (var i=0;i<grid.length;i++){ for (var j;j<_global.height/50;j++){ grid[i][j]=new Array; } } Вот ссылка на исходник: http://www.**************/?1jbl930jlx3 |
|
|||||
Modus ponens
|
Синтаксические ошибки:
grid.length=_global.width/50 Вообще не понятно, что имеется в виду... наверное, создать массив с зарезервированными Н позициями? grid[i]=new Array Не хватает круглых скобок после Array. Создать двумерный массив:
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 20:38. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|