![]() |
Баг при реакции на столкновение нескольких окружностей
Привет всем. Долго выбирал раздел форума, и надеюсь написал в нужный. Если что, прошу извинить :)
Ибо моя проблема не затрагивает сам язык или технологию - речь идет про обычную математику. Делаю игру про бегающих человечков - вид сверху. Все человечки основаны на окружностях. Игрок бегает, все остальные за ним охотятся, то есть могу облепить его со всех сторон. Обрабатываю столкновения и есть один нехороший баг, который я никак не могу побороть. Спец. билд, показывающий баг: http://makegames.ru/temp/builds/zombieLab/temporary/ Баг состоит в том, что когда игрока облепливают со всех сторон и если начать бежать в одну сторону, то персонаж начинается двигаться в абсолютно противоположную и тащить за собой всю толпу. А в идеале он должен либо стоять на месте, либо хотя бы продвигаться в указанном направлении. Скорость игрока в 2 с небольшим раза больше, чем скорость зомби. Помогите пожалуйста понять где ошибка. Вот кусок кода с подробными комментариями: Код AS3:
|
Ну он начинает двигаться, а его начинают возвращать) Возможно, человек у вас постоянно в начале списка, потому сперва всегда его возвращают на место и поможет его перекинуть в конец списка (а если в конце, то наоборот =).
А вообще задача сложная и, в общем, точно не решается. Этим занимается solver физ. движков. Потому тут наверное лучше просто взять box2d какой-нить. |
Box2d тут очень тормозит, я пробовал. Игрок апдейтится последним.
Цитата:
|
А если его таки попробовать первым апдейтить? Вообще поигрался - довольно забавно =)
Только меня больше смутило, что малейшее касание зомба очень сильно стопит. А смещение при облеплении - не заметил бы даже. И когда он облеплен, то по идее он и так быстро сдохнет, не думаю, что игрок заметит то смещение, оно очень медленно ползет. Я бы предложил вместо того, чтобы бить на 4 части отрезок, на одну отрисовку (т.е. enter frame), 4 раза апдейтить мир (ну соответственно скорости все в 4 раза меньше, как вы делали при помощи k и iter ваших). |
От логики мира пока сделаны как раз только коллизии. Там ничего другого нет. Я попробую отдельно вытащить метод и протестировать.
Добавлено через 24 часа 51 минуту Если кому интересно, то буду пробовать вот этот подход - http://www.gamedev.ru/code/articles/...onBasedPhysics |
| Часовой пояс GMT +4, время: 03:41. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.