Страница 1 из 1

Проблема с ротацией объекта

Добавлено: 11 май 2014, 19:19
MrDead
Функция поворачивания объекта к игроку

Код: Выделить всё

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;            }
Ф-ция создания объектов на сцене

Код: Выделить всё

    public function addmobs(obj:Object, x:uint, y:uint):void        {                        switch (obj.id)            {        case 0:             mob = new CreateMob(this,igrok);            mob.x = x;            mob.y = y - 1500;            paint_high.addChild(mob);            mass.push(mob);                    break;                //Прямая верхняя стена        }
В общем суть в том, что когда игрок входит в диапозон обзора моба, он должен поворачиваться в нему, но вот получается так, что к какому бы объекту не подошел, все мобы смотрят на игрока, а надо чтобы поворачивался к игроку только тот, в чьем диапазоне он находится. Но вот что-то не особо получается, пробовал с массивом - удалось только поворачивать всех мобов к игроку) Подскажите что сделать(

Re: Проблема с раотацией

Добавлено: 13 май 2014, 21:45
MrDead
Ну или подскажите как повернуть объект, который находится в радиусе 500х500 от центра основного объекта(к которому надо повернуться). То есть проверить, есть ли в зоне 500х500(от центра оснв.объекта) объект класса и добавить его в массив(даже если их несколько), а оттуда делать с ними что нужно

Re: Проблема с раотацией

Добавлено: 13 май 2014, 22:02
XELAD
Вероятно, в вашем варианте нужно
либо использовать hitTestObject, отрисовав вокруг главного персонажа зону,
либо считать в цикле расстояние от главного персонажа до мобов, и брать тех, которые в определенном радиусе,
либо сравнивать каждого моба с персом по x & y, тем самым используя прямоугольник (а не круг, как в варианте № 2).

Re: Проблема с ротацией объекта

Добавлено: 13 май 2014, 22:33
MrDead
В общем то,решил без hittestobject проблему. Сейчас возник другой вопрос, вместе с поворачиванием объекта, поворачиваются и все остальные объекты входящие в его класс. Например

Код: Выделить всё

text_level = new TextField();
Когда моб поворачивается, поворачивается и text_level, в итоге цифры этого текстового поля исчезают. Что надо прописать, чтобы текстового поле не крутилось вместе с мобом? Попробовал что-то вроде этого в enter_frame

Код: Выделить всё

text_level.rotation = 0 - main_bgplatform.mass[i].rotation;
Но не прокатило

Re: Проблема с ротацией объекта

Добавлено: 13 май 2014, 23:23
Casperovskii
MrDead
Нужно в класс ввести функцию, в которую при повороте будет передаваться значение поворота главного класса. А то вы привели одну строчку, а где она находится - не понятно.
Я так понимаю есть класс моб, а внутри него текстфиелд. Так вот функция эта должна каждый раз задавать значение text_level.rotation=-rot, где rot - значение угла поворота родительского класса. И то в этом случае текстфиелд будет переезжать вокруг моба.
А решением по-лучше будет поворачивать не весь родительский спрайт, а только иконку моба.

Re: Проблема с ротацией объекта

Добавлено: 13 май 2014, 23:29
MrDead
Спасибо. До этого в hittestobject нельзя было повернуть спрайт моба, т.к класс и объект в классе по координатам не совпадали, с другим способом поворачивается. Парадокс)

Re: Проблема с ротацией объекта

Добавлено: 13 май 2014, 23:42
MrDead
Всё норм)