![]() |
Необычное столкновение
Я новичок, уже много чего изучил, но со столкновением не сталкивался. Еле нашёл поиск на этом сайте) Там вывелось много тем я посмотрел, но не одна тема не подходит к моей ситуации. Вообщем как сделать столкновение как в этой игре? Цель не скопировать игру, как подумают не которые а понять, как это работает. Ещё еслив это реализовано при помощи box2d то можно как нить по другому, без box2d? box2d - я пробовал изучить или даж хотя бы понять, но пока трудно, потому что не могу освоить, понять class,ы.
|
Например так: хранить в модели текущее состояние доски, как двумерный массив булевых значений – ячейка свободна / занята. Про каждый блок мы можем сказать на каких координатах он находится и как сориентирован (вертикально / горизонтально). Этих данных достаточно, чтобы сформировать dragRect (если осуществлять перетаскивание методом startDrag). После отпускания кнопки мышки, смотрим на текущие визуальные координаты блока, вычисляем соответствующие координаты в модели, подгоняем их до целых и перемещаем блок на положенное место. Обновляем модель.
|
Нет ли на этом форуме подобной темы? что бы хотя бы понять не которые ваши слова. Допустим эти "хранить в модели текущее состояние доски". Щас по гуглю/поищу на сайте, отпишусь о результатах. Спасибо за ответ.
Добавлено через 7 минут Вот пока что реализовано: Код AS3:
|
Цитата:
Код AS3:
|
Александр Мостовой, спасибо за ответ. а что означает freeHeight?
Добавлено через 24 минуты со startDrag разобрался, огромнейшее спасибо) щас буду думать над столкновением. |
Цитата:
startDrag(false, rectangle); rectangle - это прямоугольник в пределах которого вы можете таскать объект. В вашем случае он совпадает с обстью объекта + дополнительное поле Цитата:
|
Цитата:
|
Александр Мостовой, да с MVC напряг не могу понять смысла его использования, точнее как он действует. Щас по гуглю мож дойдёт.
caseyryan, учту спасибо. |
Цитата:
Суть в том что вам нужно решить для начала задачу на уровне логики-математики - без какого либо визуального представления. У вас есть некторое абстрактное поле Код AS3:
После того как сможете решить на уровне математики, потом просто будет передавать в StartDrag rectangle который легко можно будет вычислить умножая число клеточек на ширину ячейки . Если поступите таким образом сможете вдальнейшем отрисовывать объекты хоть в пикселях, хоть в 3Д, будет очень просто генерировать уровни. Вы могли бы тут, конечно, "схалявить" и просто прибавлять к текущему rectangle объекта расстояние до ближайших границ по наибольшей длине, но это тупиковый путь. Да, термин который вы используете - столкновение - совершенно не подходит к задаче. Не знаю какой другой предложить, но столкновения относятся больше к физике, у вас просто свободная область и rectanglesIntersection |
Александр Мостовой, спасибо щас буду разбираться, я уже думал, что придётся изучать MVC))) это получается как массив, точнее управлять массивами? вот нашёл про Array
Код AS3:
Сори, сразу и не понял это же многомерные массивы) Добавлено через 10 минут так, всё я понял как этим пользоваться. Вот: Код AS3:
1,1,1,1,1,0, // изменилось второе число. 1,0,0,0,0,0, 1,0,0,0,0,0, 0,1,0,1,0,0, 0,1,0,1,0,0, 0,1,0,1,0,0 Я научился управлять, что дальше? нужно их передавать в StartDrag? Добавлено через 31 минуту вот у меня кодик получился: Код AS3:
|
| Часовой пояс GMT +4, время: 09:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.