Хит-тестирование на многих объектах Flash AS3 - PullRequest
0 голосов
/ 24 ноября 2011

Я делаю симуляцию, в которой участвуют частицы, динамически добавляемые на сцену (много кругов). Когда эти круги сталкиваются (которые на самом деле являются видеоклипами), они должны отскочить (импульс переключен). У меня нет проблем с физикой, но я не знаю, как эффективно проверять столкновения. Это сводится к возможности: 1) проверить, сталкивается ли частица, и 2) узнать, какая другая частица (объект) участвует в столкновении?

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

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 25 ноября 2011

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

Реализация, однако, сложна, и если вы не намеренно ставите перед собой задачу, используйте библиотеку, чтобы не изобретать велосипед.Вы можете использовать Box2D, физический движок, или Flixel, игровой движок.

0 голосов
/ 01 марта 2014

Если вы не хотите использовать Box2D, вы все равно можете использовать рекурсивную функцию, чтобы выполнить бинарный поиск и многократно разбивать поиск на квадранты, пока вы не обнаружите столкновение в элементе массива, или вы не

0 голосов
/ 24 ноября 2011

Если вы заботитесь о скорости и оптимизации, я бы посоветовал вам использовать Box2D . Есть много примеров, чтобы вы начали, и делать то, что вы предлагаете, на самом деле довольно просто.

0 голосов
/ 24 ноября 2011

http://troygilbert.com/2009/08/pixel-perfect-collision-detection-revisited/

Это ссылка на класс as3, обеспечивающий Pixel-Perfect Collision Detection.Ссылка для скачивания предоставлена ​​на сайте.Надеюсь, это поможет.

Автор также ссылается на другое решение:

http://coreyoneil.com/portfolio/index.php?project=5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...