|
|
|||||
Игры: определение попадания
Хочу сделать игру.
Задача такая, есть N летящих пуль и есть M объектов в которые эти пули могут попасть. Какие существуют способы определения попадания пули в объект? В голову приходит лишь способ в каждом объекте на каждый кадр проверять hitTest-ом пересечение с каждой из N пуль. Но, ИМХО, не кажется мне способ оптимальным при достаточно большом M и N. Может кто подскажет более интересные варианты решения?
__________________
Бороться и искать, найти и перепрятать. |
|
|||||
Banned
Регистрация: Jun 2004
Сообщений: 39
|
Да ты прав hitTest ето очень плохо! Пусть твои обьекты проверяет определеннуюю координатную плоскость ели пуля в нее попадает то знач попала! -) Но что за игра у тебя куда пули летят в каком направлении дай исходник глянуть то, я мож внесу изменения и вышлю а ты глянеш!
|
|
|||||
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Я так понимаю, это задача о пересечении прямой и плоскости, просто придется проверить M прямых.
Тут лучше спросить на мат. форумах, алгоритмы точно есть, потому что это используется в 3D движках, где есть рейтрейсинг... |
|
|||||
Регистрация: Apr 2003
Адрес: DC
Сообщений: 4,489
|
Цитата:
Ессно чем больше объектов, которые могут пересечься, тем сложнее. Вот к примеру: http://www.nuran.org/lab/flash/0034.htm Всего то 20 шариков а грузят даже Athlon 2000 ...
__________________
flash/flex/unity |
|
|||||
А почему собственно лучше проверять по области, а не hitTest-ом. Разве сей оператор не был специально заведен для упрощения подобных задач? Подсовываешь поражаемый объект и координаты пули - получаешь результат. Тем паче на кадый кадр обсчет придется проводить для всех объектов по новой? Мишени то двигаются, пуля летит.
RATFACE, выслать не могу, я в процессе написания. Пока сделал только стрелка, точнее лучника. В данный момент атачу стрелы к моменту выстрела . Стрелы летят на все 360 градусов. Вид сверху.
__________________
Бороться и искать, найти и перепрятать. |
|
|||||
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Понимаешь, каждый раз обсчитывать все эти проверки, если у тебя пуль хотя бы 10, уже значит напрягать камень, о чем и сказал выше nuran.
Если воспользоваться мат. алгоритмами, то узнать, будет ли пересечение, можно за одно вычисление и еще до отрисовки графики. Проблема в том, что надо как-то описать фигуру... Т.к. объект, как я понимаю, у тебя может быть произвольной формы? |
|
|||||
меценат
|
ну вот и поняслась )))))))))))))))))))
математику городить начали ))) а стоит ли ???? если обьект после попадания уничтожается то можно обойтись обычным хиттестом , если обьект крупнее обьекта поподания и нужно контролировоть точно его контур то моно обойтись гетбоунсом , а математики на замену хит тесту только выгодна лиш в одном случае - когда необходимо контролировать соприкосновение обьектов с точностью до пикселя (хит тесты и прочие методы с операторами не дают такой точности , если обьект который отлавливает хиттест больше ловящего обькта то при пересечении координат х у персонаж либо обьект могет застрять в этом пересечении и вообще провалится невесть куда) P.S. а поповоду математики вот посмотри пример ))) P.S.2. я конечно же не Nuran но все же до пятки допрыгну)))))))))))))))) P.S.3. клавиши вверх и вниз двигают кубики пробел полет и лево право это лево право)) все это было задано что бы более четко видеть картину выгоды математики))))) P.S.4. Описать обьект мона простыми геометрическими фигурами - круг и квадрат ))))
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники Последний раз редактировалось D12; 10.11.2004 в 23:37. |
|
|||||
Bad Habit, у меня лучник управляется пользователем. Предполагается, что "Враги" двигаются за лучником, т.е. их тректория не просчитывается. Единственно что можно сделать, это как то математически отсечь те пули (стрелы) и объекты которые точно никогда не пересекутся.
__________________
Бороться и искать, найти и перепрятать. |
|
|||||
Сделал.
Что получилось то получилось . Пытался сделать эмуляцию стрельбы из лука, на мой взгляд как в жизни )
__________________
Бороться и искать, найти и перепрятать. |
|
|||||
Сделал.
Что получилось то получилось . Пытался сделать эмуляцию стрельбы из лука, получилось на мой взгляд как в жизни (увлекался в свое время) http://www.cinematika.ru/entertainment/game_n.php
__________________
Бороться и искать, найти и перепрятать. |
Часовой пояс GMT +4, время: 14:02. |
|
« Предыдущая тема | Следующая тема » |
|
|