Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с ротацией нескольких объектов (http://www.flasher.ru/forum/showthread.php?t=207841)

Godwarlock 11.05.2014 17:39

Проблема с ротацией нескольких объектов
 
Ф-ция поворачивания объекта к другому
Код AS3:

        private function mob_obzor(ev:Event):void
                {
                        if (main_player.bg.hitTestObject(shere_vis))
                        {
 
                                bg_mob.rotation = Math.atan2(main_bgplatform.mob.y - main_bgplatform.igrok.y, main_bgplatform.mob.x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
                            rotation_mob = false;
                        }
                        else
                        {
                                rotation_mob = true;
                        }

Ф-ция создания объектов на сцене

Код AS3:

        public function addmobs():void
                {
 
                        mob = new CreateMob(this,igrok);
                        mob.x = 0;
                        mob.y = 0;
                        paint_high.addChild(mob);
 
                        mob = new CreateMob(this,igrok);
                        mob.x = 0;
                        mob.y = 400;
                        paint_high.addChild(mob);
 
 
                }

Почему-то только один объект поворачивает к цели как надо, когда попадает в его радиус, а когда попадаешь в радиус второго объекта, он не двигается совсем. Подскажите что надо сделать, дабы 2 и более объектов поворачивались как надо.

ZackMercury 11.05.2014 18:20

Воспользуйтесь массивами.
Создавая экземпляр класса и записывая его в ту же переменную удаляет ссылку на предыдущий экземпляр.
Поэтому обратиться к нему вы уже не сможете.
Массивы - самое удобное решение.

Godwarlock 11.05.2014 18:51

Код AS3:

private function mob_obzor(ev:Event):void
                {
                        if (main_player.bg.hitTestObject(shere_vis))
                        {
                                for (i = 0; i < main_bgplatform.mass.length; i++)
                        {
                                main_bgplatform.mass[i].rotation = Math.atan2(main_bgplatform.mass[i].y - main_bgplatform.igrok.y,main_bgplatform.mass[i].x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
                            rotation_mob = false;
                        }
                        }
                        else
                        {
                                rotation_mob = true;
                        }

Теперь вроде все поворачиваются как надо, единственное, что теперь все объекты(независимо от того у какого обзора стоит игрок) поворачиваются к игроку, а надо чтобы поворачивался только тот, у которого он стоит, собственно в чей shere_vis попадает, тот и должен повернуться, а не все) Что подправить надо? У меня с этим пока сложности, поэтому спрашиваю

Добавлено через 4 часа 23 минуты
Подскажите пожалуйста)

Rzer 13.05.2014 19:40

main_player.bg.hitTestObject(shere_vis) нужно также проверять в цикле main_player.bg.hitTestObject(main_bgplatform.mass[i].shere_vis) - Что-нибудь такое

Godwarlock 13.05.2014 23:48

Ладно, тогда подскажите как повернуть объект, который находится в радиусе 500х500 от центра основного объекта(к которому надо повернуться). То есть проверить, есть ли в зоне 500х500(от центра оснв.объекта) объект класса и добавить его в массив(даже если их несколько), а оттуда делать с ними что нужно.

Добавлено через 28 минут
Всё разобрался. Спасибо всем


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

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