Просмотр полной версии : hitTest по-взрослому :)
итак вопрос такой....
В первой своей игре прикосновения я делал путём перебора существующих объектв, поскольку их было всего 120 штук -поэтому это было не сложно ни для меня ни для компа,а вот как сделать автоматическую проверку прикосновения к ЛЮБОМУ объекту - не известно
Кто не в курсе - надо указать имя целевого мувика и к которому он должен прикоснутся
Вот вопрос; возможно ли впринципе сделать проверку на соприкосновение со всеми мувиками и чтоб hitTest возвращал имя(идентификатор) мувика с которым столкнулся
PS может можно применять звёздочку или там воросики как в полноценных языках
chingachgoog
14.01.2009, 21:19
for in - перебор объектов в объекте (например в руте).
gloomyBrain
14.01.2009, 21:22
нет, вопросики и звездочки не применяются
можно перебрать все объекты циклом:
for(item in this){
if( myMC.hitTest( this[item] ) ){
trace("есть контакт!")
}
}
где, понятное дело проверяется пересечение myMC со всеми объектами
А как еще? Можно все, что будет проверяться заносить в массив и потом делать сходный с данным цикл по элементам массива
Однако принципиально иного метода, где объекты не перебираются нет
AlexCooper
14.01.2009, 21:28
for (element in MovieClipPredok)
if (element == MovieClip && movie.hitTest(element)) addToMassive(element) где MovieClipPredok - клип или ссылка на котором располагаються тестирование клипы на хитТест
element == MovieClip проверка на то что это не что инное как Мувик
movie.hitTest(element) проверка на хитТест
addToMassive(element) запись в миссив либо вызов функции в которую передаёться имя мувика который попал в хитЗону
P.S. Код написан не под требования компилятора а для размишления над алгоритмом.
спасибо большое!
Буду проверять
AlexCooper
14.01.2009, 21:31
Памятка: hitTest просит глобальных координат
Я тут вот про что ещё подумал...
В конце концов любой способ упирается в ресурсы...
Дак вот ещё вопрос Какой из 2 способов лучше:
1) создание массива всех нужных мувиков и проверять соответствие каждого десятка из них в кадре(тут надо перечитать сложная формулировка)
on Enterframe(){
For (i=0;i==10;i++){
MC.hitTest("targetMC"+i)
}
2) или задействовать for(item in this) . Но тут огромные сомнения т.к. в каждом кадре проверять соответствие это ваще комп лопнет (ну если мувиков штук 500)
PS в пользу первого варианта то , что интересующие мувики имеют порядковые номера типа grunt0 grunt1
PSS и кстати пример первого варианта я использовал в соей игре вот тут её можно посмотреть http://www.kongregate.com/games/sadoff/invasion-from-hell
Там если пехотинца выбрать - у него зона поражения -она и тестирует соприкосновение со врагами
http://lab.polygonal.de/2007/09/09/quadtree-demonstration/
http://lab.polygonal.de/2007/09/09/quadtree-demonstration/
я конечно инженер по профессии но от этого у меня ум за разум заходит
Я конечно попробую разобраться , но чувствую что буду искать чего -нить попроще
я конечно инженер по профессии но от этого у меня ум за разум заходит
Я конечно попробую разобраться , но чувствую что буду искать чего -нить попроще
А в чем проблема? Поле делится на ячейки, каждый объект проверяет столкновение с объектами только в тех ячейках, в которых он сам находится.
А в чем проблема? Поле делится на ячейки, каждый объект проверяет столкновение с объектами только в тех ячейках, в которых он сам находится.
Это как раз ясно но вот само осуществление какое то заумное
Я просто стараюсь создавать как можно меньше объектов и даже массивов а там всё какое то враждебное для меня
Может завтра с утра полегче будет , а то сегодня баги весь день устранял в своей игре, вот и запарился
gloomyBrain
15.01.2009, 00:16
Быстрее будет метод с массивами
Еще быстрее будет метод по ссылке
Оба метода делают, по сути, одно и то же: "отрезают" лишнее
Минимизируя количество вычислений - увеличиваем FPS (аксиома, я знаю) =)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.