Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   Игры: определение попадания (http://www.flasher.ru/forum/showthread.php?t=64651)

Random SunFire 09.11.2004 12:58

Игры: определение попадания
 
Хочу сделать игру.
Задача такая, есть N летящих пуль и есть M объектов в которые эти пули могут попасть.
Какие существуют способы определения попадания пули в объект?
В голову приходит лишь способ в каждом объекте на каждый кадр проверять hitTest-ом пересечение с каждой из N пуль.
Но, ИМХО, не кажется мне способ оптимальным при достаточно большом M и N.
Может кто подскажет более интересные варианты решения?

RATFACE 09.11.2004 18:12

Да ты прав hitTest ето очень плохо! Пусть твои обьекты проверяет определеннуюю координатную плоскость ели пуля в нее попадает то знач попала! -) Но что за игра у тебя куда пули летят в каком направлении дай исходник глянуть то, я мож внесу изменения и вышлю а ты глянеш!

Antares 10.11.2004 02:23

Я так понимаю, это задача о пересечении прямой и плоскости, просто придется проверить M прямых.

Тут лучше спросить на мат. форумах, алгоритмы точно есть, потому что это используется в 3D движках, где есть рейтрейсинг...

nuran 10.11.2004 05:16

Цитата:

Оригинал написал(а) Bad Habit
... потому что это используется в 3D движках, где есть рейтрейсинг...
Нифига куда тебя понесло.
Ессно чем больше объектов, которые могут пересечься, тем сложнее. Вот к примеру:
http://www.nuran.org/lab/flash/0034.htm

Всего то 20 шариков а грузят даже Athlon 2000 ...

Random SunFire 10.11.2004 18:42

А почему собственно лучше проверять по области, а не hitTest-ом. Разве сей оператор не был специально заведен для упрощения подобных задач? Подсовываешь поражаемый объект и координаты пули - получаешь результат. Тем паче на кадый кадр обсчет придется проводить для всех объектов по новой? Мишени то двигаются, пуля летит.

RATFACE, выслать не могу, я в процессе написания. Пока сделал только стрелка, точнее лучника. В данный момент атачу стрелы к моменту выстрела :). Стрелы летят на все 360 градусов. Вид сверху.

Antares 10.11.2004 21:18

Понимаешь, каждый раз обсчитывать все эти проверки, если у тебя пуль хотя бы 10, уже значит напрягать камень, о чем и сказал выше nuran.

Если воспользоваться мат. алгоритмами, то узнать, будет ли пересечение, можно за одно вычисление и еще до отрисовки графики. Проблема в том, что надо как-то описать фигуру... Т.к. объект, как я понимаю, у тебя может быть произвольной формы?

D12 10.11.2004 23:33

Вложений: 1
ну вот и поняслась )))))))))))))))))))

математику городить начали )))
а стоит ли ???? если обьект после попадания уничтожается то можно обойтись обычным хиттестом , если обьект крупнее обьекта поподания и нужно контролировоть точно его контур то моно обойтись гетбоунсом , а математики на замену хит тесту только выгодна лиш в одном случае - когда необходимо контролировать соприкосновение обьектов с точностью до пикселя (хит тесты и прочие методы с операторами не дают такой точности , если обьект который отлавливает хиттест больше ловящего обькта то при пересечении координат х у персонаж либо обьект могет застрять в этом пересечении и вообще провалится невесть куда)

P.S. а поповоду математики вот посмотри пример )))
P.S.2. я конечно же не Nuran но все же до пятки допрыгну))))))))))))))))
P.S.3. клавиши вверх и вниз двигают кубики пробел полет и лево право это лево право)) все это было задано что бы более четко видеть картину выгоды математики)))))
P.S.4. Описать обьект мона простыми геометрическими фигурами - круг и квадрат ))))

Random SunFire 11.11.2004 11:46

Bad Habit, у меня лучник управляется пользователем. Предполагается, что "Враги" двигаются за лучником, т.е. их тректория не просчитывается. Единственно что можно сделать, это как то математически отсечь те пули (стрелы) и объекты которые точно никогда не пересекутся.

Random SunFire 18.11.2004 14:08

Сделал.
Что получилось то получилось :) . Пытался сделать эмуляцию стрельбы из лука, на мой взгляд как в жизни :))

Random SunFire 18.11.2004 14:10

Сделал.
Что получилось то получилось :) . Пытался сделать эмуляцию стрельбы из лука, получилось на мой взгляд как в жизни :) (увлекался в свое время)
http://www.cinematika.ru/entertainment/game_n.php


Часовой пояс GMT +4, время: 05:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.