![]() |
Как установить прилетевший шарик на определенное место
Пишу игру шарики - сверху есть массив шариков, снизу вылетает еще один, после столкновения шарики одинакового цвета исчезают. Так вот проблема в том, что если нет шариков одинакового цвета в месте столкновения, то прилетевший необходимо поставить на строго определенное место в зависимости от того, с каким шариком он столкнулся (если по касательной - справа/слева, иначе 2 положения снизу). Пыталась просчитывать в зависимости от координат центров столкнувшихся шаров, но все равно сохраняется определенная погрешность и периодически шарик становится совсем не туда, куда было бы логично его поставить. Может есть более простой способ высчитывать траекторию прилета?
|
Цитата:
|
Возможно. Мой алгоритм состоит из великого множества условий - если центры смещены по Х, по Y, если шарик прилетел практически вертикально (именно здесь задается значение отклонения от центра стоящего шарика), также учитывается занята ячейка или нет. Вообщем, мозги уже закипели, а результат все равно какой-то кривой получается.
Получается, что более очевидного способа нет, что ж, буду продолжать в том же направлении... |
Я так понимаю это игра типа Bubles, которая на Palm'e была. Визуально вспоминаю как она работала, так вот думаю что скорее всего в тот момент когда шарик летит, он уже должен знать куда он станет, на какие ячейки, а в момент полёта просчитывать столкновения и исчезния\не исчезания.
|
Да, я думала об этом, но каким образом до столкновения можно определить необходимую ячейку?
|
Алгоритм простой: есть центры (точки), где шарики могут остановиться; как только шарик сталкивается с другим шариком, проходим весь массив и выбираем точку с наименьшим расстоянием от центра шарика в момент столкновения.
|
Ну ничего себе, как все оказалось просто!!! Именно то, что нужно. Большое спасибо!
|
| Часовой пояс GMT +4, время: 03:04. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.