Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
1

Ротация объектов

11.05.2014, 23:54. Показов 1307. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ф-ция поворачивания объекта к игроку
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
            }
Ф-ция создания объектов на сцене
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
 
        }
В общем суть в том, что когда игрок входит в диапозон обзора моба(тобишь в shere_vis), он должен поворачиваться в нему, но вот получается так, что к какому бы объекту не подошел, все мобы смотрят на игрока, а надо чтобы поворачивался к игроку только тот, в чьем диапозоне он находится. Но вот что-то не особо получается, поробовал с массивом - удалось только поворачивать всех мобов к игроку) Подскажите что сделать(
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2014, 23:54
Ответы с готовыми решениями:

Плавная ротация
Есть объект, он должен плавно менять ротацию по таймеру Например если ротация равна 90 градусов,...

Удалить один из объектов и увеличить другой при соприкосновении объектов.
Как сделать так чтобы (Когда Sprite1 дотронулся до Sprite2 тогда sprite2 destroy и Sprite1 + size)...

Ротация логов
всем привет! ведутся логи апача httpd-access.log и httpd-error.log, вопрос в том как правильно...

Ротация данных
Есть код WebBrowser1.Navigate('http://site.ru/ad1.html'); //реклама нижняя...

6
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
12.05.2014, 13:24 2
Лучший ответ Сообщение было отмечено MrDead как решение

Решение

Вам нужно проверять расстояние от моба до игрока и в том случае, если оно в заданном диапозоне (диапозон обзора моба) - посорачивать моба к игрок. Проверка осуществляется по формуле Пифагора.
1
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
13.05.2014, 17:38  [ТС] 3
Ладно, учту. Тогда другой вопрос. Я подумал что будет лучше поворачивать моба прямо из его класса

ActionScript 3
1
bg_mob.rotation = Math.atan2(bg_mob.y - main_bgplatform.igrok.y, bg_mob.x - main_bgplatform.igrok.x) * 180 / Math.PI + 90
bg_mob имеет начальные координаты 0,0. main_bgplatform.igrok также имеет координаты 0,0, но при движении они естественно меняются. Но почему-то данный вариант не работает. Когда игрок в диапозоне, моб поворачивается лицом ко мне и с какой-бы стороны игрок не подошел, моб поворачивается только на 90 градусов, то есть когда срабатывает enter_frame, по сути он должен следить за координатами игрокам и поворачиваться к нему, но при первом срабатывании ф-ции он повернется на 90 градусов и ступор, даже если игрок покинул зону и снова вошел с противоположной стороны, то он всё также стоит повернутый на 90 градусов...Никак не просеку в чем косяк
0
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
13.05.2014, 17:47 4
Как вариант - у Вас координаты игрока расчитываются относительно main_bgplatform, а координаты моба относительно класса родителя - соответственно их системы координат не совпадают.
Посмотрите на методы DisplayObject-a localToGlobal и globalToLocal.
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
13.05.2014, 18:23  [ТС] 5
Понял. Тогда вернемся к предыдущему варианту, в общем при добавлении мобов на сцену, я записываю их в массив mass, то есть создается предположим 5 элементов из объектов класса моба. Как мне записать или определить в hisstestobject, что конкретно в диапозоне этого моба находится игрок и поворачивать именно этого моба по элементу того массива, у которого стоит игрок? Можно сделать конечно таким образом
ActionScript 3
1
2
 main_bgplatform.mass[0].rotation = Math.atan2(main_bgplatform.mass[0].y - main_bgplatform.igrok.y,main_bgplatform.mass[0].x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
 main_bgplatform.mass[1].rotation = Math.atan2(main_bgplatform.mass[1].y - main_bgplatform.igrok.y,main_bgplatform.mass[1].x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
и т.д, но это слишком много лишнего кода получится и муторно выйдет, в общем не вариант, надо как-то упростить, как-то идентифицировать что ли моба, но я что-то не знаю как это сделать. В общем то в этом состоит основная проблема, мне бы разобраться получше и тогда сразу куча вопросов откинется в сторону
0
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
13.05.2014, 18:26 6
ActionScript 3
1
2
3
4
5
var mass:Array = [ m1, m2, m3, m4, m5 ]; // массив монстров
for each (var monster:Sprite in mass) // пробегаемся по всем монстрам в массиве
{
  // вписываем проверку
}
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
13.05.2014, 23:17  [ТС] 7
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
private function mob_obzor(ev:Event):void
        {
            for each (var monsters:Sprite in main_bgplatform.mass)
{
            if (main_bgplatform.igrok.bg.hitTestObject(shere_vis))
            {
                
                   
                    monsters.rotation = Math.atan2(monsters.y - main_bgplatform.igrok.y, monsters.x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
                    rotation_mob = false;
            
                   
            }
Опять же, поворачиваются все мобы((

Добавлено через 4 часа 32 минуты
Всё разобрался, спасибо) получилось по теореме пифагора
0
13.05.2014, 23:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2014, 23:17
Помогаю со студенческими работами здесь

Ротация в процентах
Есть код: &lt;?php $banners = array (); // Список баннеров $banners = 'Баннер 1'; //40% $banners...

Ротация объявлений
А как у ЯДа обстоит дело с ротацией разностоимостных объявлений в составе рекламного блока? ...

Ротация Флеш баннера
Уважаемые форумчане на сайте стоит флеш код простой вывод флеш баннера с заглушкой, &lt;object ...

Ротация фона в таблице
Есть таблица с фоновой картинкой &lt;table background=&quot;images/picture1.jpg&quot; Есть еще одна фоновая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru