Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Пересечение 2 заранее неизвестных объектов (http://www.flasher.ru/forum/showthread.php?t=98013)

Gh >k 04.07.2007 21:17

Пересечение 2 заранее неизвестных объектов
 
Привет всем!
Вобщем ситуация такая :
Я создаю игру, где мне нужно проверять пересечение 2 объектов - пули с именем "gun"+gun_number где gun_number всегда меняется, и "enemy"+i где i тоже переменная. Как мне проверить их пересечение?????
Единственное что я придумал - это проверять их из самого клипа enemy на пересечение с клипом guns где куда и копируются все пули. Но код получается уж больно ресурсоёмкий.
Если кто делал что-то подобное помогите плиз.:wacko:

divinus 04.07.2007 21:28

Вот тут хорошо написано, но если лень разбираться, то почитай про функцию hitTest

Три Двери 04.07.2007 23:58

Попробуй использовать for...in.

CorC 05.07.2007 10:03

Я уже давал совет, написать код на хиттест внутри мувика пули. И не надо заморачиваться.

Gh >k 05.07.2007 22:48

2 diviniz : я не нашол иам для себя ничего полезного.
2 три двери : через цыклы это тоже слишком будет жрать память, врагов будет по 7-8 зараз, а пуль еще больше
2 CorC : я писал код внутри пули, но 1)Это слишком ресурсоёмко,2)нужно знать еще и с каким врагом столкнулась пуля.
Но всем спаибо за попытку помоч.

xintrea 06.07.2007 02:21

В любом случае, тебе придется проверять на столкновение координаты каждой пули с координатами каждого врага. Хоть ты это будешь делать в цикле, хоть это будет происходить автоматически через hitTest().

Хотя, чего там, ~8 врагов, ~20 пуль, всего 8 x 20 = 160 проверок, умножим на 4 потому что по OX две проверки делать и по OY две проверки, итого 640 проверок. Для флеша в таком количестве проверить number - вообще незаметно.

А формально, сделать менее ресурсоемко - это идти на ухищрения, группировать пули и объекты по условному месторасположению. Например разбить игровое поле на 9 условных прямоугольников 3x3

1 2 3
4 5 6
7 8 9

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

Gh >k 06.07.2007 18:30

Спасибо, через недели мучений может и придумаю как это сделать)))
Если ты сам такое делал пожалуйста подскажи поподробнее.
У меня на 4 врага и 2 пули уже виснет. У мня азу 512 а проц 2.4, так что это не от компьютера.Может я со скриптом слегка намудрил, незнаю но виснет заметно очень.

xintrea 07.07.2007 04:59

Я такое только на сях делал. На флеше не пробовал. Но тебе тут каждый скажет, что ты что-то со скриптом намудрил. 4 врага и 2 пули - чего там тормозить то может?

Совет - запусти swf отдельно в флешплейере и посмотри, не увеличивается ли у процесса потребляемая память в ходе работы. Если все время растет - точно намудрил. Если не растет, то какие-то у тебя дикие циклы которые проверяют неизвестно что.

Gh >k 07.07.2007 18:10

Ну у меня не просто hitTest а поточечное сканирование.
У мня не виснет до появления 2 пули, а после её появления начинается.

Gh >k 08.07.2007 07:53

ну хоть ктонибудь ХЕЛП!!


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

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