![]() |
|
||||||||||
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Во-первых, не надо шустрить массивы каждый раз, когда Вам нужен элемент. На протяжении огромного куска кода Вы работаете с одним и тем же элементом, и каждый раз заставляете плеер искать массив и искать элемент в нем. Когда можно просто сохранить ссылку на этот элемент в начале витка цикла.
Затем Вы добавили enemy в какой-то массив temp. Я не знаю зачем. Так же совершенно непонятно происходящее дальше — Вы забываете про enemy и вытаскиваете кого-то из массива temp. Вытаскиваете, если он там есть конечно, что маловероятно. Почему маловероятно? Ну вот у Вас массив enemies, и в нем, допустим, 50 зомби. Начинаем цикл. Вы берете зомби с индексом "0", проверяете хиттестом, и он не попадает в обзор. И не будет добавлен в temp. Однако, несмотря на это, Вы уверенно берете какой-то несуществующий temp[0] и начинаете сравнивать его Х и Y с координатами героя. Вообще-то здесь плеер уже выдал ошибку. Если Вам так нужен массив видящих героя врагов, надо создать его в одном цикле. Затем надо провести второй цикл, уже обходя этот новый массив temp, с учетом его размера, а не массива всех врагов. Мне же кажется, что никакой temp вообще Вам не нужен. Вы проходите по массиву врагов, и все враги, видящие героя, устремляются к нему. Для этого вся ваша батарея if'ов должна помещаться внутри первого условия — хиттеста. Это и есть ваш "тру". Если enemy (т.е. enemies[i]) попал в обзор, то ЕГО координаты и меняем, устремляя его к герою. И никакого tempa для этого не надо — вот он, видящий враг, прямо здесь, в блоке условия. Добавлено через 8 минут public function goblinAgr (e:Event): void { for (var i:Number=0; i < enemys.length; i++) { var enemy:MovieClip = enemys[i] as MovieClip; if (hero.hitTestObject(enemy.obzor)) { if (enemy.x > hero.x) { enemy.x -= HeroSpeedE; enemy.gotoAndStop(1); } if (enemy.y > hero.y) { enemy.y -= HeroSpeedE; } if (enemy.x < hero.x) { enemy.x += HeroSpeedE; enemy.gotoAndStop(3); } if (enemy.y < hero.y) { enemy.y += HeroSpeedE; } } } }
__________________
Reality.getBounds(this); |
![]() |
Часовой пояс GMT +4, время: 03:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|